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