1

我有一些代码,我在其中重定向stdoutlogfile(通常的,dup, open, and dup2)然后恢复stdout。只要我C在两者之间有一些代码,它就可以正常工作,当我调用system()并执行一些shell/perl脚本时,我看到logfile在执行结束时被删除了!(被调用的脚本没有logfile名称,也不做任何事情unlink)我可以在脚本执行logfile看到正在编写的内容。

代码块是这样的:

 /redirect-stdout-to-logfile/
  system(scripts);
  /reset-stdout/

我想将所有消息捕获stdoutlogfile. 任何有助于进一步调试的帮助,或非常感谢的提示。

4

1 回答 1

1

如果没有源代码,很难判断出什么问题。

在您致电之前,您的“恢复”似乎stdout并不完整system()

我想到的是使用exec家族而不是system因为exec知道您的进程在调用外部程序时所拥有的文件描述符。(尽管在这种情况下,文件描述符打算被关闭。)

于 2012-04-29T17:53:35.687 回答