python - 使用子进程创建 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
推荐阅读
- python - 无法通过 Postman 向 Django 发送 GET 请求
- python - 如何检查三个参数对 Python 神经网络中 3 个输出的同时影响?
- android - 在 android java 代码中查找 Xamarin 类名或命名空间
- php - PHP CSV到带有标题和ID的数组作为组键
- java - 如何合并流中的字符串并返回另一个流
- php - 如何从 while 循环创建 csv 文件并将其附加到 php 中的电子邮件?
- python - 如何使用 python 将 csv 文件中的每 7 行转换为单行?
- php - 不打开数据库中的图像
- snowflake-cloud-data-platform - 雪花数据库存储层中的“云存储”是什么意思?
- c - C - 将值分配给结构数组的分段错误