1

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

  • 它必须分离
  • 它的输出必须被重定向
  • 生成的 python 进程必须打印子进程的 PID,然后退出。

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

4

1 回答 1

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...'
于 2013-10-11T02:15:33.030 回答