18
A
回答
27
當傳遞一個負 PID到kill
,它實際上將信號發送到處理由(絕對)數組。你在Python中使用os.killpg()
。
-1
您應該使用信號參數9來終止進程樹。
根@本地:〜$蟒蛇
> > >進口OS
> > > os.kill(PID,9)
如果你要使用signal.SIGKILL常數,你應該使用os.killpg(PGID ,signal.SIGKILL)來終止進程樹。
11
如果父進程不是「進程組」但您想要與子進程關閉,則可以使用psutil(https://pythonhosted.org/psutil/#processes)。 os.killpg無法識別非進程組的pid。
import psutil
parent_pid = 30437 # my example
parent = psutil.Process(parent_pid)
for child in parent.children(recursive=True): # or parent.children() for recursive=False
child.kill()
parent.kill()
4
另一種解決方法,如果你的過程不是一個進程組,你不想psutil使用,是運行這個shell命令:
pkill -TERM -P 12345
例如與
os.system('pkill -TERM -P {pid}'.format(pid=12345))
相關問題
- 1. 父進程在C#中終止時如何終止子進程
- 2. 終止子進程
- 3. python終止/殺子進程組
- 4. 如何從WiX中終止進程
- 5. 子進程終止清理
- 6. Python:在創建子進程後終止父進程
- 7. Ctrl-C如何終止子進程?
- 8. 從python函數啓動和終止子進程
- 9. 「execv」子進程存在和終止
- 10. 我如何從Java終止進程樹?
- 11. 在Ctrl-C上終止父進程和子進程
- 12. 停止主管進程而不會終止其他子進程
- 13. 如何使python子進程停止?
- 14. 在C中終止子進程後,父進程未完成
- 15. 如何檢查Linux進程以確定進程何時/何時終止/終止?
- 16. WKWebView進程終止
- 17. Python和子進程
- 18. 如何在io中終止進程:get_line?
- 19. 如何在vb.net中終止進程?
- 20. 如何在Git中終止進程
- 21. 如何在vbscript中終止進程
- 22. 當從Python子進程終止時的C++調用函數
- 23. 從終端自動終止java進程
- 24. Python線程和子進程
- 25. 如何等待進程終止(並等待相應的子進程)在PHP中?
- 26. 後臺進程在其父進程終止時被終止?
- 27. 如何終止從Jenkins工作開始的子進程?
- 28. Python子進程阻止在主進程中阻止從標準輸入讀取
- 29. .net中的列表和終止進程
- 30. 如何防止從產卵子進程產生的進程?
編號'signal.SIGKILL'是正確的常數使用。 –
os.kill(pid,9)適用於我,我在centos上使用python 2.7 5.6 –
是的,'os.kill(pid,9)'適用於'signal.SIGKILL'碰巧是'9',這就是在大多數平臺上。儘管如此,'signal.SIGKILL'是正確的使用常數,並且使用'9'代替'signal.SIGKILL'並不是一種改進,也不以任何方式解決OP的問題。 –