2011-08-22 69 views
0

在python程序中,我需要在后台运行一个命令,而不显示它的输出。因此,我现在正在做os.system("nohup " + command + " &")python中的跨平台背景静默过程执行

编辑:command python程序退出时不应该被杀死/关闭。

但是,这只会在Linux上工作,文件的内容将在nohup.out结束,但我不需要它在那里。因此我正在寻找一个独立于平台的解决方案。 os.spawnlp(os.P_DETACH, command)不起作用,即使使用*p版本,也无法进入应用程序的完整路径。

注意:我知道command通常取决于平台,但这不是我的问题。

+0

可能重复的[你如何在Python中创建一个守护进程?](http://stackoverflow.com/questions/473620/how-do-you-create-a-daemon-in-python ) –

回答

2

查看subprocess模块。

from subprocess import Popen, PIPE 
process = Popen(['command', 'arg'], stdout=PIPE) 
+0

工作正常。但是当python程序关闭时,'command'会被终止。 – pictuga

+0

您必须等待它完成。你可以使用'process.communicate()'或轮询返回代码。 – nmichaels

+0

'command'必须独立于python脚本。如果我杀死python,'command'必须继续运行。 – pictuga