我需要将一些通常会打印到屏幕上的输出重定向到一个文件中。 我已经能够将输出重定向到文件,但我似乎无法弄清楚如何将程序其余部分的输出定向回终端窗口。
所有代码都在 C 中。程序在 Ubuntu 上运行。
关于需要做什么的任何见解?
最佳答案
我假设您从未重定向的标准输出开始。然后关闭原始标准输出并重新打开它以将标准输出发送到文件 - 可能使用 freopen()
。完成文件写入后,您希望将标准输出重新连接到终端。
如果这是正确的,您可能需要使用 freopen()
打开 /dev/tty
文件。请注意,这并不完全可靠。如果程序在没有终端的情况下运行(例如,如果它是从 cron 作业运行的),打开 /dev/tty
将失败。
不过,让写入文件的代码采用文件流参数会更好(更简单),这样您就不必依赖重定向和重新重定向标准输出。
如果您正在使用文件描述符,则可以在执行初始重定向到文件之前对标准输出文件描述符使用 dup()
。在关闭重定向的标准输出后,您可以再次使用 dup()
将原始标准输出重新连接回原始文件描述符。
关于c - 如何将标准输出重定向回终端窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055002/