我应该将以下命令放在C程序的系统函数参数中。
$ timed-run 20 prog1 1 1>/dev/null 2>abc.dat
timed-run
应该执行prog1
最多20秒,然后终止它。我希望将prog1
的输出重定向到abc.dat
。对此有什么解决方案吗?
谢谢
答案 0 :(得分:1)
当您编写“1> / dev / null”时,您将程序的输出重定向到位桶。 (也就是说,你要丢弃它。)如果你改写“1> filename”,输出将转到指定的文件。
答案 1 :(得分:1)
对于重定向子进程输出,有几种方法,以下2是最重要的方法:
答案 2 :(得分:1)
我怀疑,但是如果没有看到prog1
源代码就无法知道,prog1
没有刷新其输出缓冲区。也就是说,它的代码如下:
i = 42;
fprintf(stderr, "result: %d\n", i);
格式化的输出(即“结果:42 \ n”)存储在stderr
的输出缓冲区中,等待写入的机会。但是,在此之前,timed-run
会用信号杀死prog1
。
您的选择是定期调用fflush(stderr)
,更改缓冲类型(使用setbuf
或setvbuf
),或捕获信号并在程序终止时调用fflush(stderr)
。