我假设你从标准输出开始未经重定向.然后关闭原始标准输出并重新打开它以将标准输出发送到文件 - 可能使用freopen().完成写入文件后,您需要将标准输出重新连接到终端.
如果这是正确的,您可能需要使用freopen()打开/dev/tty文件.请注意,这并不完全可靠; 如果程序在没有终端的情况下运行(例如,如果它是从cron作业运行的话),则打开/dev/tty将失败.
但是,更好(如更简单),使写入文件的代码采用文件流参数,这样您就不必依赖重定向和重定向标准输出.
如果您正在使用文件描述符,则可以dup()在执行初始重定向到文件之前使用标准输出文件描述符.然后,您可以dup()在关闭重定向的标准输出后再次使用将原始标准输出重新连接回原始文件描述符.