2012-02-09 66 views
2

我想在python應用程序中執行一個程序,它會在後臺運行,但最終會到達前臺。Python:fork,pipe和exec

GUI用於與它進行交互。但控制通過stdin和stdout上的控制檯提供。我希望能夠用我的應用程序的GUI來控制它,所以我的第一個想法是:

  • 父,DUP2 stdin和stdout
  • 才能訪問他們
  • EXEC孩子

這是很容易在python中實現和如何?有沒有其他的方法來實現我想要的,那會是什麼?

+1

的答案是「是」,「是」。那些你寫的問題的答案似乎並不有用。請**更新**您的問題,以澄清您想知道的內容。 – 2012-02-09 13:25:20

回答

6

這是相當容易使用標準的Python子進程模塊:

http://docs.python.org/py3k/library/subprocess.html

+0

的確,我會這樣。我在尋找2.X模塊,幸運的是它已經存在了很長一段時間(http://docs.python.org/library/subprocess.html)。 – Aki 2012-02-09 14:25:42

3

這在構造上並不複雜!

檢查這個例子

if os.fork(): 
os._exit(0) 
os.setsid() 
os.chdir("/") 
fd = os.open("/dev/null", os.O_RDWR) 
os.dup2(fd, 0) 
os.dup2(fd, 1) 
os.dup2(fd, 2) 
if fd 2: 
os.close(fd) 

這Python代碼設置一個ID,改變了目錄,打開一個文件,進程和關閉!

+0

這可能是我如何在C中做到這一點,但我希望Python有一些模塊,可以幫助我簡單地以便攜的方式實現這一點。 – Aki 2012-02-09 14:23:34