2013-10-10 43 views
1

使用Python 2.6或2.7,我需要生成一個子進程:的Python:菌種子有幾個要求

  • 必須超脫
  • 它的輸出必須重定向
  • 產卵Python進程必須打印子進程的PID,然後退出。

我已經通過了各種模塊(和各種Stackoverflow帖子),它似乎都與一個或多個這些要求相沖突。例如。 os.system() =否pid;subprocess.* =要麼沒有重定向,要麼沒有分離。

回答

1

通過detached我假設你的意思是你想讓你的腳本在啓動子進程後繼續運行,對嗎?如果是這樣,我相信你將不得不分叉,在子進程中啓動子進程並在那裏捕獲它的輸出。

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...'