Я предполагаю, что вы начинаете со стандартного вывода без направления.Затем вы закрываете исходный стандартный вывод и снова открываете его для отправки стандартного вывода в файл - возможно, используя freopen()
.Когда вы закончите запись в файл, вы захотите снова подключить стандартный вывод к терминалу.
Если это правильно, вам, вероятно, нужно использовать freopen()
, чтобы открыть файл /dev/tty
.Обратите внимание, что это не совсем надежно;если программа запускается без терминала (например, если она запускается из задания cron), открытие /dev/tty
завершится неудачей.
Однако было бы лучше (как в более простом) иметькод, который записывает в файл, принимает аргумент файлового потока, поэтому вам не нужно полагаться на перенаправление и перенаправление стандартного вывода.
Если вы работаете с файловыми дескрипторами, вы можете использовать dup()
настандартный дескриптор выходного файла перед выполнением первоначального перенаправления в файл.Затем можно снова использовать dup()
для повторного подключения исходного стандартного вывода обратно к исходному дескриптору файла после закрытия перенаправленного стандартного вывода.