我正在爲使用popen基本上執行「python myserver.py」和shell = False的服務器編寫一個單元測試框架,運行一些測試,然後繼續通過killpg關閉服務器。打開一個使用多處理調用腳本的python調用(pgrp問題)?
這個myserver.py可以並將使用多處理來產生它自己的子進程。問題是,在我的測試中,似乎服務器進程的pgrp pid與運行unittests的實際主線程共享相同的組pid,因此在組pid上執行os.killpg不僅會取消服務器,也是調用popen的過程(不是我想要做的)。它爲什麼這樣做?我怎樣才能讓他們成爲獨立的團體pid,我可以獨立殺人?
你不需要重新實現popen。使用'subprocess.Popen'和'preexec_fn = os.setpgrp'。 – 2013-07-07 03:31:43