在Windows服務器上,我開始從主腳本subprocs一個新的控制檯窗口,並將其添加到特效的列表,以便我可以關閉它們:Python的子進程CREATE_NEW_CONSOLE的Windows不關閉在殺()
p = Popen(["python", 'secondscript.py', arg1, arg2, arg3], creationflags=CREATE_NEW_CONSOLE)
Proc.append(p)
稍後,如果我殺與特效:
for p in Proc:
p.kill()
他們似乎停止運行,但我不離開得到剩餘打開控制檯窗口。本身並不是一筆巨大的交易,但隨着時間的推移可能會加劇並引發問題。
生活使用新的控制檯標誌很容易,但有一個確保控制檯窗口關閉正常的方法嗎?我可以依靠OS lib中的taskkill,但似乎並不是這樣做的好方法。
我看了一下,看起來有些人在Linux服務器上遇到了問題,不得不發送sigkill,但我認爲這就是kill()應該做的。
我可能不得不使用kill()來停止它的工作,然後使用taskkil來整理,但如果有更好的方法,我會很感激任何建議。
一個更合適的方法是將套接字傳遞給子進程以發送退出消息。這樣它可以優雅地退出。調用TerminateProcess應該是最後的手段,因爲它將程序中的地毯拉出來。它相當於Unix中的'SIGKILL'。 – eryksun