我正在调用子进程,并且想要禁用对我的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,服务器实际上正在打印。

最佳答案

如上所述,被调用进程正在调用服务器,该服务器生成了神秘的stdout。

关于python - 防止子流程的子流程写入标准输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9153796/

10-11 04:10