Q
掛一個子進程
1
A
回答
1
使用可以使用SIGSTOP來掛起一個子進程 - 但這與子進程進入無限循環或有條件的等待有明顯不同 - 仍然可能足夠接近進行測試。
要檢查子進程沒有掛起,你需要發送心跳給父母(你需要某種通信通道 - 至少stdin/stdout)。然後,如果孩子沒有發送一些心跳消息,那麼孩子已經掛了。
0
子進程將繼承在fork之前創建的任何管道。你可以用它來「懸掛」你的孩子並讓它知道什麼時候繼續。你可以讓你的子進程在管道上嘗試一個阻塞讀操作,它會阻塞(即掛起),直到父進程寫入內容爲止。
你也可以使用Douglass提到的信號。您可以讓操作系統進行基本的停止/繼續操作,或者您可以執行信號處理程序來執行更復雜的操作(如進入無限循環)。
對於這兩種例子可以在Unix Programming FAQ一噸的過程控制,信號處理,管道等其他信息一起被發現...
你可以嘗試尋找在/ proc,以確定是否被掛起。您可以讀取/ proc/< child-pid >/stat以獲取大量低級別進程信息,包括當前狀態,進程已調度的用戶/內核時間量,當前堆棧和指令指針等。 ..使用這個組合,你可以嘗試確定過程是否掛起。查看proc(5)手冊頁獲得/ proc/<pid>/stat的更多信息。
相關問題
- 1. 殺死一個懸掛的子進程
- 2. 沒有掛父進程的子進程
- 3. Python子進程.Popen掛起
- 4. Gulp子進程掛起
- 5. 掛鉤到另一個終端進程?
- 6. Python子進程如何確定子進程是否掛起?
- 7. 當一個MPI進程執行MPI_Barrier()時,其他進程掛起
- 8. Python子進程通信掛起
- 9. Linux:fork&execv,等待子進程掛起
- 10. Python子進程調用掛起?
- 11. 子進程掛在管道內
- 12. Python的子進程調用掛起
- 13. 子進程readline掛起等待EOF
- 14. 分叉的子進程掛在node.js
- 15. 調用一個子進程
- 16. 創建一個子進程
- 17. 超時一個子進程
- 18. 父進程有多個子進程和2個子進程有一個子進程
- 19. 從另一個java進程啓動java進程時進程掛起
- 20. perl父進程掛起等待子進程讀取stdin
- 21. 檢測子進程是否掛起父進程
- 22. 已完成子進程但父進程掛起
- 23. Ruby Tracepoint - 將掛鉤掛接到open3子進程
- 24. 掛載PostgreSQL進程
- 25. 進程間掛接
- 26. SDL_SetVideoMode掛起進程
- 27. 如何區分一個子進程與其他子進程
- 28. 將子進程管道插入另一個子進程
- 29. 如何從一個子進程派生子進程分別
- 30. 進程線程(或整個進程)被掛起