python命令一执行,X服务器就会被杀死



我是Linux新手,X等概念让我望而却步,所以请耐心等待。我正在尝试在类似python的中使用bash命令startx启动X服务器

cmd = 'startx &' 
subprocess.Popen(cmd) 

问题是,一旦它执行X,服务器就会被杀死(因为进程结束了?(,但在命令行上手动执行时,它似乎工作得很好(尽管在没有ctrl+z/c的情况下,它不会将控制权返回给该终端(。我也试过类似的东西

cmd = 'nohup startx &>/dev/null &' 

(从我读到的子流程来看。Popen((应该是非阻塞的,但事实似乎并非如此?我是不是误解了文件?(

但它只是阻止执行。如何让X在不阻止执行或退出的情况下运行?感谢您的帮助!

您可能想要直接调用Xxinit,而不是startx

p = subprocess.Popen(
("X",)
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
)

您还可以从将其作为上下文管理器来很好地清理中受益。。所有

import contextlib
import subprocess
@contextlib.contextmanager
def subprocess_X():
p = subprocess.Popen(
("X",)
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
)
try:
yield p
finally:
p.terminate()
...
# later in your program
with subprocess_X() as p:
# work here and may refer to X proc if needed (such as for PID)

最新更新