[英]Problem with program's output redirection
我应该将以下命令放在C程序的系统函数参数中。
$ timed-run 20 prog1 1 1>/dev/null 2>abc.dat
timed-run
应该执行prog1
最多20秒,然后终止它。 我希望将prog1
的输出重定向到abc.dat
。 有什么解决办法吗?
谢谢
当您编写“ 1> / dev / null”时,您会将程序的输出重定向到位桶。 (也就是说,您将其丢弃。)如果您改写“ 1> filename”,则输出将转到指定的文件。
对于重定向子进程的输出,有几种方法,以下两个是最重要的:
我怀疑,但是在没有看到prog1
源代码的情况下无法知道, prog1
没有刷新其输出缓冲区。 也就是说,它具有如下代码:
i = 42;
fprintf(stderr, "result: %d\n", i);
格式化的输出(即“ result:42 \\ n”)存储在stderr
的输出缓冲区中,等待写入时机。 但是,在此之前, timed-run
用信号杀死prog1
。
您的选择是定期调用fflush(stderr)
,更改缓冲类型(使用setbuf
或setvbuf
)或捕获信号并在程序终止时调用fflush(stderr)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.