Skip to main content
 首页 » 编程设计

python之防止子进程的子进程写入标准输出

2025年05月04日7leader

我正在调用子进程并希望禁用任何输出到我的 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,服务器实际打印出来。

请您参考如下方法:

如上所述,被调用进程正在调用一个服务器,它产生了 mysterios stdout。