我有一个 C 程序,它向控制台输出一些信息,然后进入无限循环。我需要在后台运行程序并将输出重定向到日志文件。如果程序没有无限循环,则重定向有效,如果程序有无限循环,则什么都不写。
例如,这个程序test.c:
#include <stdio.h>
main (void) {
printf("Hello world\n");
while(1);
}
如果我运行它,我会在控制台上看到 Hello world 行,但是如果我运行 ./test > logfile,我不会在文件中写入任何内容。
有什么方法可以做到这一点吗?
谢谢!
最佳答案
欢迎来到缓冲输入/输出的世界。
使用非缓冲系统调用(open
、read
、write
)或刷新流。
编辑:另外,这可能是一个文件系统问题。在文件系统上执行 sync
。
关于c - 即使终止程序,也将程序回显到文件中(linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16436007/