Python 如何分离subprocess.call运行的程序?

Python 如何分离subprocess.call运行的程序?,python,python-3.x,subprocess,Python,Python 3.x,Subprocess,我正在使用subprocess.call打开带有默认应用程序的pdf文件,如下所示: subprocess.call(["xdg-open", pdf], stderr=STDOUT) 但是,当运行它时,进程被连接到终端,我想分离它。基本上,我想运行它,然后能够使用终端进行其他工作 我该怎么做呢?你可以用这个 from subprocess import Popen, PIPE, STDOUT p = Popen(["xdg-open", pdf], stderr=STDOUT, stdout

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

subprocess.call(["xdg-open", pdf], stderr=STDOUT)
但是,当运行它时,进程被连接到终端,我想分离它。基本上,我想运行它,然后能够使用终端进行其他工作

我该怎么做呢?

你可以用这个

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()

你的代码似乎不符合我的要求。它不会从终端分离。Doing stdout=subprocess.PIPE确实与终端分离,但它在浏览器中打开,而不是在pdf-viewer中打开。Doing pdf=Popen([“xdg open”,pdf],stdin=None,stdout=None,stderr=None,close_fds=True,shell=False)修复了我的问题。