【问题标题】:Python: run xdg-open in backgroundPython:在后台运行 xdg-open
【发布时间】:2013-09-24 13:05:29
【问题描述】:

我在 Python 上有控制台应用程序。我尝试使用 xdg-open 并在后台运行它,但我不能。我试过了

os.system('xdg-open http://google.com &')
subprocess.call('xdg-open http://google.com &', shell=True)

【问题讨论】:

    标签: python terminal operating-system subprocess


    【解决方案1】:

    我不明白你的意思

    但我做不到

    因为它对我有用。但是,我想您是在抱怨父进程在子进程关闭之前不会关闭。

    然而,该代码是一种过时的做法(如果它曾经受到青睐的话);现代的等价物是

    process = subprocess.Popen(['xdg-open', 'Dunno.png'])
    

    它不是要求 shell 为你分叉,而是从一开始就在后台运行,而无需通过 shell。这也应该解决上述问题。

    如果要捕获sys.stdout,可以使用

    process = subprocess.Popen(['xdg-open', 'Dunno.png'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    

    将进程的 stdout 和 stderr 的输出重定向到缓冲区。 (您可以使用process.stdoutprocess.stderr 访问这些缓冲区,并通过读取和写入这些缓冲区或使用process.communicate 进行通信。

    您可以通过process.returncode获取返回码。

    如果您的问题不是这个,问题描述(回溯?)会很有用。还值得检查在 shell 中使用 xdg-open 的行为是否符合您的预期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      相关资源
      最近更新 更多