Python:在后台运行xdg-open



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

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

你的意思

但我不能

因为它对我有用。但是,我想您是在抱怨父进程直到孩子关闭为止。

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

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 的行为是否符合您的期望。

最新更新