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



在我的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

如果您不想在控制台上打印任何内容,您应该捕获stderr以及stdout

Screen也可能检测到stdin是 tty 并将其用于 I/O。不过,我不知道给它一个管道或/dev/null是否会解决问题。尝试一下,看看它是否有效。

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

最新更新