Python:生成具有多个要求的子流程

时间:2013-10-10 23:14:08

标签: python redirect pid spawn detach

使用python 2.6或2.7,我需要产生一个子进程:

  • 必须脱离
  • 必须重定向输出
  • 产生python进程必须打印子进程的PID,然后退出。

我已经浏览了各种模块(以及各种Stackoverflow帖子),似乎所有这些模块都与​​这些要求中的一个或多个冲突。例如。 os.system() =否pid; subprocess.* =无重定向或无分离。

1 个答案:

答案 0 :(得分:1)

通过分离我假设你的意思是你希望你的脚本在启动子进程后继续运行,对吗?如果是这样,我相信你必须分叉,在子进程中启动子进程并在那里捕获它的输出。

import os
import subprocess

cmd = 'ls'

if os.fork() == 0:
        process = subprocess.Popen(cmd, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
        print "subprocess pid: %d" % process.pid
        stdout = process.communicate()
        print stdout
else:
        print 'parent...'
相关问题