Python:在后台运行xdg-open

时间:2013-09-19 12:36:45

标签: python terminal operating-system subprocess

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

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

1 个答案:

答案 0 :(得分: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的行为是否符合预期。