防止子进程的子进程写入stdout

时间:2012-02-05 22:43:36

标签: python subprocess stdout

我正在调用子进程,并希望禁用任何输出到我的shell。我正试着这样做:

 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 个答案:

答案 0 :(得分:-2)

如上所述,被调用的进程正在调用一个服务器,它产生了神秘的标准输出。