【问题标题】:How to detach a program ran by subprocess.call?如何分离由 subprocess.call 运行的程序?
【发布时间】:2018-07-26 12:15:45
【问题描述】:

我正在使用 subprocess.call 使用我的默认应用程序打开一个 pdf 文件,如下所示:

subprocess.call(["xdg-open", pdf], stderr=STDOUT)

但是,当运行它时,该进程附加到终端,我想将其分离。基本上,我想运行它,然后能够将终端用于其他东西。

我该怎么做呢?

【问题讨论】:

标签: python python-3.x subprocess


【解决方案1】:

您可以为此使用Popen

from subprocess import Popen, PIPE, STDOUT
p = Popen(["xdg-open", pdf], stderr=STDOUT, stdout=PIPE)
# do your own thing while xdg-open runs as a child process
output, _ = p.communicate()

【讨论】:

  • 您的代码似乎没有达到我想要的效果。它不会与终端分离。执行 stdout=subprocess.PIPE 确实会从终端分离,但它会在浏览器中打开,而不是在 pdf-viewer 中。
  • 做 pdf = Popen(["xdg-open", pdf], stdin=None, stdout=None, stderr=None, close_fds=True, shell=False) 解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2018-08-13
  • 2018-04-07
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多