防止子进程的子进程向stdout写入
我在调用一个子进程时,想要关闭所有输出到我的命令行。我尝试用:
with tempfile.TemporaryFile() as tempf:
proc = Popen(cmd, stdout=tempf, stderr=tempf)
proc.communicate()
但是终端上还是有一些输出(虽然比正常情况少)。可能的问题是被调用的进程使用了 os.execvp
?有没有什么建议可以完全关闭所有子进程的输出?
注意
把输出重定向到 devnull 是关闭输出的更好方法:
with open(os.devnull, 'w') as tempf:
proc = Popen(cmd, stdout=tempf, stderr=tempf)
proc.communicate()
问题解决了!
非常简单的解决方案:被调用的进程使用了 CORBA,服务器实际上是在打印输出。
1 个回答
-2
如上所述,被调用的程序正在连接一个服务器,这个服务器产生了神秘的标准输出(stdout)。