2010-06-02 63 views
3

我想控制從python(我在Linux下)相同類型的幾個子進程。 我想:控制從Python的進程

  • 開始他們。
  • 阻止他們。
  • 詢問他們是否仍在運行。

我可以用spawn來啓動一個進程,並獲得pid。使用這個pid,我可以用kill來阻止它。我相信還有一種方法可以詢問它是否與pid一起運行。

問題是,如果發生以下情況會怎樣: 我開始一個進程,記住pid。該過程結束時沒有我注意到,另一個完全不同的過程開始分配相同的PID。我試圖殺死我的過程,我殺了一個完全不同的過程。

在Python中啓動和控制進程的更好方法是什麼? 謝謝!

回答

7

您可以使用subprocess.Popen啓動其他進程,並保存結果Popen object。通過該對象上的方法,您可以檢查進程是否仍然存在,等待它結束,終止它,殺死它 - 所有這些都沒有任何基於pid的混淆的風險!作爲一個優點,這也是一種更爲跨平臺的方式,儘管在這種情況下你可能並不在乎。