我的C++程序將使用fork()和execv()產生多個子進程。我如何查詢這些進程?如果我想關閉一個,我該怎麼做?如何查詢C++中的子進程
0
A
回答
5
當您fork
時,子進程中的返回值爲0,父進程中的子進程ID(pid)爲0。
然後,您可以使用該pid調用kill
以查看它是否仍在運行,或請求關閉。要檢查進程是否正在運行,請使用0作爲信號,然後檢查返回值(0 ==正在運行; -1 ==未運行)。要請求關機,請使用SIGTERM
作爲信號。
1
可能是我知道的fork()
後進程之間溝通的最佳方式是通過插座(參見socketpair())。
從那裏,你可以通過定義一個通信協議(包括終止請求)來完成任何工作。
0
到fork()
通話後,您可以使用wait(&status_int)
或waitpid(child_pid, &status_int, WNOHANG)
檢測兒童的返回狀態,使用後者,如果你不希望阻止等待一個孩子。傳遞的參數&status_int
將是一個指向int
的指針,它將在退出後保留子進程的返回狀態。如果您想等待任何分支過程完成,並且不關心返回值,則可以簡單地撥打wait(NULL)
或非阻止版本waitpid(-1, NULL, WNOHANG)
。
相關問題
- 1. 如何在C中fork()n子進程?
- 2. 如何使用SQL查詢中的查詢進行查詢
- 3. 如何查看子進程的stdout?
- 4. 父進程在C#中終止時如何終止子進程
- 5. 如何子句中的子查詢
- 6. 如何使用常規Windows C/C++ API查詢進程的線程數
- 7. 如何使這些查詢進行子查詢?
- 8. 如何通過子查詢改進/簡化查詢?
- 9. 如何使用from語句中的子查詢進行LINQ查詢?
- 10. 如何使用相關子查詢進入Codeigniter中的活動記錄查詢
- 11. 如何查詢低完整性進程下的進程名稱?
- 12. 如何檢查查詢中的子查詢的交集?
- 13. 如何在oracle中進行多對多的子查詢?
- 14. 如何使用Zend_Db_Adapter_Mysqli :: fetchAll()中的「IN」WHERE子句進行查詢?
- 15. 如何從NHibernate的子查詢中進行選擇
- 16. Ctrl-C如何終止子進程?
- 17. 如何查找所有子進程?
- 18. 如何在Laravel中使用子查詢正確查詢查詢
- 19. C#的LINQ子查詢中的foreach
- 20. 如何進一步子查詢從SQL查詢中獲取所有Product_ID?
- 21. 如何在子查詢中使用主查詢中的列?
- 22. SQL自子查詢改進
- 23. C:父子進程
- 24. 如何查詢子文檔中的mongodb
- 25. 如何查詢mongodb中的子對象
- 26. 如何重寫JOIN中的子查詢?
- 27. 如何在MySQL中對多個子查詢進行分組
- 28. 如何在jena中使用子查詢進行分頁?
- 29. 如何在laravel雄辯中進行子查詢?
- 30. 如何在Power Query中使用M進行子查詢/ Power BI