问题描述
我正在尝试使用子进程打开终端实例,但我找不到如何为 bash 命令添加 & 参数
在 bash 中,以下命令按要求工作
konsole --workdir /home/jeff/projects &
但是当我运行以下命令时,系统会打开新的 Konsole 窗口,但我用来运行命令的窗口仍然很忙 - 进程未释放
konsole --workdir /home/jeff/projects
import subprocess
subprocess.run(['konsole','--workdir','','/home/jeff/projects',])
print('finished')
当我运行代码时,程序挂起并且从未到达print('finished')命令
如何让 & 进入 python 子进程命令?
如果我为 Gnome 终端运行类似的命令,我不需要命令行上的 &
gnome-terminal --working-directory=/home/jeff/projects
subprocess.run(['gnome-terminal','--working-directory=/home/jeff/projects',])
print('finished')
解决方法
您可以通过使用 Popen
来实现您想要的:
#!/usr/bin/env python3
from subprocess import Popen
import time
p = Popen(['konsole','--workdir','/home/jeff/projects'
])
print('finished starting konsole')
time.sleep(30) # ... do other stuff while konsole is running
print('terminating konsole')
p.terminate() # terminate konsole if needed