我的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中進程的子進程數?
- 2. 如何在ORM中進行子查詢?
- 3. 如何在C中fork()n子進程?
- 4. C中的SQL子查詢#
- 5. 父進程在C#中終止時如何終止子進程
- 6. 如何查看子進程的stdout?
- 7. 如何使用SQL查詢中的查詢進行查詢
- 8. 如何使用常規Windows C/C++ API查詢進程的線程數
- 9. 如何子句中的子查詢
- 10. 如何通過子查詢改進/簡化查詢?
- 11. 如何使這些查詢進行子查詢?
- 12. 如何防止CASE中的從屬子查詢x(子查詢)
- 13. 如何對SOQL中的同一對象進行內部查詢或子查詢
- 14. 如何使用from語句中的子查詢進行LINQ查詢?
- 15. 如何使用相關子查詢進入Codeigniter中的活動記錄查詢
- 16. 如何查詢低完整性進程下的進程名稱?
- 17. LINQ/C#子查詢
- 18. Qt C++如何在QTreeWidget中爲子項創建子查詢
- 19. 如何檢查查詢中的子查詢的交集?
- 20. Ctrl-C如何終止子進程?
- 21. 如何使用Zend_Db_Adapter_Mysqli :: fetchAll()中的「IN」WHERE子句進行查詢?
- 22. 如何改進MySQL中的SELECT子查詢?
- 23. 如何從NHibernate的子查詢中進行選擇
- 24. 如何在QueryBuilder的addSelect中使用子查詢進行乘法
- 25. 如何在oracle中進行多對多的子查詢?
- 26. 如何在Laravel的流利中進行子查詢?
- 27. 如何在Laravel中使用子查詢正確查詢查詢
- 28. C#的LINQ子查詢中的foreach
- 29. 子查詢中的T-sql子查詢
- 30. 如何在FROM子句中的MySQL中的UPDATE查詢中使用子查詢