3

我最近遇到了一些我想完全独立地启动命令的情况,并且在与脚本不同的进程中,相当于将其输入到终端中,或者更具体地说,将命令写入 .sh 或 .desktop 并双击它. 我的要求是:

  • 我可以在不关闭应用程序的情况下关闭 python 窗口。
  • python 窗口不显示应用程序的标准输出(您不希望在 CLI 中出现随机文本),我也不需要它!

我尝试过的事情:

  • os.system 等待。
  • subprocess.call 等待。
  • subprocess.Popen 启动一个子进程(duh)关闭父进程从而退出应用程序

这基本上就是您在网上可以找到的所有内容!如果真的归结为它,我可以启动一个 .sh(或 Windows 的 .bat),但这感觉像是一种廉价的黑客攻击,而不是这样做的方法。

4

3 回答 3

1

如果在从 os.system 调用时在命令之后放置 & ,那会不会起作用?例如:

import os
os.system( "google-chrome & disown " )
于 2013-09-14T22:15:03.107 回答
1
import subprocess
import os
with open(os.devnull, 'w') as f:
    proc = subprocess.Popen(command, shell=True, stdout=f, stderr=f)
于 2013-09-14T22:22:54.103 回答
1

使用 fork 和 exec 以“UNIX 方式”生成子进程。这是 Python 中的 shell 的一个简单示例。

import os

prompt = '$ '
while True:
    cmds = input(prompt).split()
    if len(cmds):
        if (os.fork() == 0):
            # Child process
            os.execv(cmds[0], cmds)
        else:
            # Parent process
            # (Hint: You don't have to wait, you can just exit here.)
            os.wait()
于 2013-09-14T22:27:55.730 回答