使用子进程创建 konsole 实例不会释放进程

问题描述

我正在尝试使用子进程打开终端实例,但我找不到如何为 bash 命令添加 & 参数

在 bash 中,以下命令按要求工作

konsole --workdir /home/jeff/projects &

但是当我运行以下命令时,系统会打开新的 Konsole 窗口,但我用来运行命令的窗口仍然很忙 - 进程未释放

konsole --workdir /home/jeff/projects

在我的python程序中,我有以下代码

import subprocess
subprocess.run(['konsole','--workdir','','/home/jeff/projects',])
print('finished')

当我运行代码时,程序挂起并且从未到达print('finished')命令

如何让 & 进入 python 子进程命令?

如果我为 Gnome 终端运行类似的命令,我不需要命令行上的 &

gnome-terminal --working-directory=/home/jeff/projects

python 代码工作并释放调用终端

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