父進程的死亡是否有在Python子進程的路要走,如果父進程已經死亡檢測?子進程檢測在Python
7
A
回答
1
你可能會逃脫讀你的父進程的ID在你的過程中非常早,然後檢查,但當然是容易出現競爭情況。這併產卵的父母可能已經當場死亡,甚至在你的過程中得到了執行其第一條指令。
除非你有驗證的方式,如果給定PID指的是「預期」的父母,我覺得這很難做得可靠。
3
如果您的Python進程在Linux下運行,並且系統調用prctl()
已公開,則可以使用答案here。
這可能會導致當父進程死亡的信號被髮送到孩子。
1
我知道的唯一可靠的方法是專門爲此創建一個管道。孩子將不得不反覆嘗試從管道讀取數據,最好以非阻塞的方式讀取數據,或使用select。當管道不存在(因爲父母的死亡大概)了它會得到一個錯誤。
1
假設父活着的時候你開始這樣做,你可以檢查它是否仍然在一個繁忙的環路這樣活着,通過使用psutil:
import psutil, os, time
me = psutil.Process(os.getpid())
while 1:
if me.parent is not None:
# still alive
time.sleep(0.1)
continue
else:
print "my parent is gone"
不怎麼樣,但...
相關問題
- 1. 在fork中檢測子進程創建()
- 2. Node.js檢測子進程退出
- 3. 檢查python中的子進程
- 4. 檢測子進程是否掛起父進程
- 5. Python子進程,給子進程輸入
- 6. Python子進程:如何在python中執行進程的子進程?
- 7. Python的子進程在Windows
- 8. 檢查子進程
- 9. Python子進程OSError
- 10. Python子進程Grep
- 11. 用Python子進程
- 12. Python和子進程
- 13. Python子進程readlines()?
- 14. Python線程和子進程
- 15. Python:用python創建子進程的子進程
- 16. 如何檢測正在運行的進程使用python
- 17. 檢測子進程期望在Ruby中輸入
- 18. pgrep檢測重複進程
- 19. 檢測進程創建
- 20. C#檢測進程退出
- 21. 檢測進程中止
- 22. 檢測創建進程
- 23. 在python上測試grep -r使用子進程.Popen
- 24. Python - 檢測啓動過程
- 25. .kill()在python子進程中殺死父進程而不是子進程
- 26. 如何檢測Python子進程中的超時是否已經達到?
- 27. 測量CPU和子進程
- 28. 在.NET中檢測進程崩潰
- 29. python子進程使用進口子進程
- 30. 的Python在進程列表中檢測到一個python腳本的名稱