我想从文件input.txt获取输入并将执行输出写入output.txt什么是正确的顺序?以下不起作用。
./a.out < input.txt > output.txt
修改
我是否必须等待执行完成才能写入?我通常在中间打破,看看o / p是否正在写入,因为运行时间非常长。
澄清:
此C程序(P1)循环遍历循环并将循环值x提供给system()调用,该调用使用./P2 < x
调用另一个C程序(P2)。程序P2对x的每个值执行并输出到屏幕。我想将两个程序的完整输出输出到output.txt。
答案 0 :(得分:2)
如果您在命令完成之前终止该命令,这可能是一个缓冲问题。行缓冲终端输出和块缓冲文件输出是C stdio库中的默认行为,因此重定向可以导致输出被缓冲,直到写入几千字节为止。
某些程序有一个命令行选项来强制行缓冲或无缓冲输出。他们通过致电setvbuf
来做到这一点。如果a.out
是您编写的程序,则可以添加setvbuf(stdout, NULL, _IOLBF, 0);
如果该程序不是您的,并且您无法重新编译它,那么有一个名为stdbuf
的实用程序可能有所帮助,如stdbuf -oL ./a.out < in > out
stdbuf
虽然是一种kludge。除非没有其他选择,否则我不会使用它。