【问题标题】:Creating konsole instance with subprocess does not release process使用子进程创建 konsole 实例不会释放进程
【发布时间】:2021-05-05 12:39:29
【问题描述】:

我正在尝试使用子进程打开终端实例,但找不到如何为 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')

【问题讨论】:

    标签: python bash subprocess gnome-terminal konsole


    【解决方案1】:

    你可以通过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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      相关资源
      最近更新 更多