完全捕获对 GNU 屏幕的调用输出
Completely capture output of call to GNU screen
在我的 Python 3 程序中,我在某个时候打开了一个 GNU 屏幕会话。
关闭此会话后,输出
[screen is terminating]
打印到周围的session(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
文件),但这绝非易事。
在我的 Python 3 程序中,我在某个时候打开了一个 GNU 屏幕会话。 关闭此会话后,输出
[screen is terminating]
打印到周围的session(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
文件),但这绝非易事。