完全捕获对GNU屏幕的调用输出

时间:2018-08-09 10:41:28

标签: python subprocess stdout

在我的Python 3程序中,我有时会打开一个GNU屏幕会话。 关闭此会话后,输出

[screen is terminating]

打印到周围的会话(运行python程序的终端)。我该如何预防?

我目前正在运行

import subprocess 
subprocess.run('screen',stdout=subprocess.PIPE,stderr=subprocess.PIPE)

通常,[stdout,stderr]=subprocess.PIPE会捕获输出并出错(例如,对于run('echo hello',stdout=subprocess.PIPE)不会打印任何内容),但是由于某些原因,它不适用于screen

1 个答案:

答案 0 :(得分:2)

如果您不想在控制台上打印任何内容,则应该捕获stderrstdout

Screen可能还检测到stdin是tty并将其用于I / O。不过,我不知道给它添加管道还是/dev/null是否可以解决问题。试试看,看看是否可行。

Screen很可能需要访问tty设备才能正常工作。您可以为此创建一个tty(通过打开/dev/ptmx并为screen提供相应的/dev/pts/N文件),但这绝非易事。