我正在尝试制作一个应用启动器,但在另一个子进程正在运行时却无法正常工作。我正在启动firefox,但是只有在关闭带有firefox的窗口时,其他任务才能完成。码:
import subprocess
while True:
app = input('>>> ')
subprocess.call(app)
示例:我启动了一个应用程序,并启动了一个网络浏览器,然后键入“ atom”和“ leafpad”以打开它们,但是只有在关闭带有浏览器的窗口时它们才能完成。
您可以创建一个运行subprocess.call
命令的线程。
一个便宜的把戏将是替换subprocess.call
为subprocess.Popen
import subprocess
while True:
app = input('>>> ')
subprocess.Popen(app)
您应该分配结果,以便您可以将命令输出作为流读取(带有默认情况下没有的正确重定向参数),但是它也可以用作在后台运行内容的快速方法。
一旦Popen
被调用并启动该过程,python脚本就会恢复。
警告:如果不存储流程句柄,则无法进一步控制应用程序,也不知道该流程是否可以启动。将句柄存储在字典中将使您的小型Shell内部命令可以随意杀死这些进程。
为了确保启动该过程,最好还是给我们一个线程并subprocess.call
在该线程中调用(阻塞但在该线程中)并检查返回代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句