如何重定向无限循环程序的输出

Sum*_*Tea 2 linux shell

我有一个运行无限循环的程序,在收到CTRL+C信号之前不会终止。我想要做的是将这个程序的输出重定向到一个文件中,log例如。但是,在我CTRL+C编写程序后,没有任何内容记录到log. 我认为这可能是一些与 I/O 缓冲区相关的问题,但不知道如何解决。我在正确的轨道上吗?如何将无限循环程序的输出转储到文件中?

Gil*_*il' 6

如果您的程序使用标准输出函数(例如putsprintf和来自stdio.hC、cout << …C++、print许多高级语言的朋友),那么它的输出是缓冲的:字符在称为缓冲区的内存区域中累积;当缓冲区中有太多数据时,缓冲区的内容将被打印(它被“刷新”)并且缓冲区变空(准备再次填充)。如果您的程序没有产生太多输出,则它可能尚未填满其缓冲区。

当你用Ctrl+杀死你的程序时C,除非你为SIGINT设置了一个信号处理程序,否则它就会死掉。任何未刷新缓冲区的内容都将丢失。

你有三种可能: