У меня есть программа. В этой программе у меня есть сеанс http с оборудованием. и в программе у меня много printf
. когда я закрываю stdout
с fclose(stdout)
. Заметьте, что сообщения, напечатанные printf
, отправляются на сеанс http (сообщения, входящие в http-пакеты).странное поведение при закрытии stdout
Я задаюсь вопросом об этом странном поведении, и мне интересно, как избежать такого поведения? Я имею в виду, как избежать перенаправления печатных сообщений на сеанс http?
«freopen» не требуется повторное использование одного и того же номера fd, поэтому это может привести к серьезным проблемам, если какой-либо код записывает stdour по fd, а не по stdio. –
В документации указано, что «Основное использование функции freopen() заключается в изменении файла, связанного со стандартным текстовым потоком (stderr, stdin или stdout)». Поэтому я был бы очень удивлен, если бы он не оставил тот же FD. (На практике это определенно делает.) – duskwuff
stdout может быть закрыт случайно. Например, закрыть сеанс ssh, который я использую для запуска приложения. Сессия ssh может быть закрыта случайно, если другой пользователь изменил IP-адрес. что я должен делать в этом случае? – MOHAMED