如何将stdout重定向回终端窗口

Jud*_*ira 3 c io redirect stdout

我需要将通常打印到屏幕的一些输出重定向到文件中.我已经能够将输出重定向到文件,但我似乎无法弄清楚如何将我的程序的其余部分的输出指回到终端窗口.

所有代码都在C中.该程序在Ubuntu上运行.

有关需要做什么的任何见解?

Jon*_*ler 5

我假设你从标准输出开始未经重定向.然后关闭原始标准输出并重新打开它以将标准输出发送到文件 - 可能使用freopen().完成写入文件后,您需要将标准输出重新连接到终端.

如果这是正确的,您可能需要使用freopen()打开/dev/tty文件.请注意,这并不完全可靠; 如果程序在没有终端的情况下运行(例如,如果它是从cron作业运行的话),则打开/dev/tty将失败.

但是,更好(如更简单),使写入文件的代码采用文件流参数,这样您就不必依赖重定向和重定向标准输出.

如果您正在使用文件描述符,则可以dup()在执行初始重定向到文件之前使用标准输出文件描述符.然后,您可以dup()在关闭重定向的标准输出后再次使用将原始标准输出重新连接回原始文件描述符.