gpt4 book ai didi

c - 重定向标准输出时删除了日志文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:15 24 4
gpt4 key购买 nike

我有一些代码,我将 stdout 重定向到 logfile(通常是 dup、open 和 dup2),然后恢复 stdout。只要我有一些 C 代码就可以正常工作在两者之间,当我调用 system() 并执行一些 shell/perl 脚本时,我看到 logfile 在执行结束时被删除! (被调用的脚本没有 logfile 名称,并且不执行任何 unlink)我可以看到 logfile 正在写入, 脚本正在执行。

代码块是这样的:

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

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

最佳答案

如果没有源代码,很难说出问题所在。

在您调用 system() 之前,您的“还原” stdout 似乎不完整。

我想到的是使用 exec 系列而不是 system 因为 exec 知道您的进程在以下情况下持有的文件描述符调用外部程序。 (虽然在这种情况下文件描述符旨在关闭。)

关于c - 重定向标准输出时删除了日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10374363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com