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

标签 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,服务器实际打印出来。

最佳答案

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

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

相关文章:

c - 为什么这个 C 程序不打印任何内容?

python - 比较两个 CSV 文件之间的值并写入第三个 CSV 文件

Python:在后台进程上使用 popen poll

python - subprocess.Popen 处理 stdout 和 stderr

python - 线程脚本不打印到控制台

ipython - 在 IPython 中分页 stdout 输出

python - 日期交叉点和空间可用性

python - python asyncio 中的协议(protocol)工厂有什么要求?

python - 在python中制作完整的矩阵输出

python - 在python中使用ffmpeg切割mp3 - 编解码器复制错误