我需要重定向一些通常会打印到屏幕上的输出到文件中。
我已经能够将输出重定向到文件,但似乎无法将程序其余部分的输出重新定向回终端窗口。
所有代码都是用C编写的。程序正在Ubuntu上运行。
有什么想法可以解决这个问题吗?
所有代码都是用C编写的。程序正在Ubuntu上运行。
有什么想法可以解决这个问题吗?
freopen()
。当您完成写入文件时,您希望重新连接标准输出到终端。freopen()
打开/dev/tty
文件。请注意,这不是完全可靠的;如果程序在没有终端的情况下运行(例如,如果它从cron作业运行),打开/dev/tty
将失败。dup()
。然后,在关闭重定向的标准输出之后,您可以再次使用dup()
将原始标准输出重新连接到原始文件描述符。嗯,你听起来像是在描述一种输出的混合方式,一些输出到屏幕,一些输出到文件。如果是这样,你需要获取另一个文件描述符并使用它来写入其中之一。文件描述符不能指向多个目标。
如果你偶然想让所有输出都同时显示在屏幕和文件中,请查看tee(1)命令。