是否可以根據父進程中發生的情況創建多個子進程?例如,通過在我的父進程中進行計算,我決定需要3個子進程,它可能是4,5或6.然後最終將整數一次一個傳入子進程,並從中獲取退出值。有沒有辦法在C中實現這一點?在C中,如何創建多個子進程(不知道你需要多少個)?
0
A
回答
0
事情是這樣的:
int childs = 5; // I want 5 childs
pid_t pid;
while (childs > 0)
{
if ((pid = fork()) == -1)
return (1); // handle this error as you want
if (pid == 0)
break;
childs--;
}
// the child go there directly
可以使用將爲pid_t數組/列表記住所有你的孩子,並使用waitpid函數來檢查它們的狀態。
編輯:
的方式來處理不同的孩子的,並與陣列記住他們:
int childs = 5; // I want 5 childs
pid_t pid[childs];
int i;
for (i=0; i < childs; ++i) {
if ((pid[i] = fork()) == -1)
return (1); // handle this error as you want
if (pid[i] == 0) {
break;
}
}
switch (i) {
case 0:
return(function0());
break;
case 1:
return(function1());
break;
case 2:
return(function2());
break;
case 3:
return(function3());
break;
case 4:
return(function4());
break;
default:
;
}
我完全不知道你想做什麼,你也可以使用模(% )操作員在一個條件下調用正確的功能。 我在那裏使用return,因爲我們不想再留在for循環中,'functionx()'將完成整個新的進程任務。您也可以在該功能中使用。
您現在有一個pid_t數組,因此您可以在循環中檢查孩子的狀態。
相關問題
- 1. 需要創建一個PHP LOOP(不知道如何進行多次失敗後)
- 2. 如何在不知道需要創建多少個對象的情況下將對象存儲在ArrayList中?
- 3. 如何知道我在一個進程中使用了多少內存? win32 C++
- 4. 在以下代碼中創建了多少個子進程
- 5. 如何知道由Cloudformation創建多少個Mount目標
- 6. 如何知道創建了多少個動態控件?
- 7. 將創建多少個進程fork()exec()
- 8. 解釋創建了多少個進程?
- 9. Unix fork:創建了多少個進程?
- 10. 如何在不知道需要多少個ArrayLists的情況下創建ArrayLists的Map?
- 11. 多線程需要多個管道
- 12. Swing「阻塞」,我想我需要線程,但不知道多少
- 13. 我需要知道數據倉庫需要多少電子表格知識
- 14. 使用單個管道創建多個子進程
- 15. realloc如何知道要複製多少?
- 16. 在C中創建多個管道
- 17. 創建多少個線程?
- 18. 如何知道網絡中有多少個子網
- 19. PLINQ查詢,需要知道進行了多少次迭代
- 20. Android - 如何創建一個ScrollView而不知道里面有多少物體?
- 21. 如何知道在多個VS打開時要殺死哪個devenv進程
- 22. C:寫一個函數不知道有多少個參數
- 23. 用C語言爲一個父類創建多個子進程
- 24. 我需要多少個進程來監控兩個信號?
- 25. 我如何創建多個進程
- 26. Linux中有四個fork()後會創建多少個進程?
- 27. 不知道如何爲多個下拉菜單創建數組
- 28. 如何知道從中創建了多少個動態HTML控件?
- 29. 使用fork()可在此代碼中創建多少個進程
- 30. 我需要知道如何創建一個交叉表查詢
[如何在execlp()之後找到程序的返回值?](http://stackoverflow.com/questions/22138007/how-to-find-the-return-value-of-a -exec -p -program-after-execlp) –
是的。閱讀[高級Linux編程](http://advancedlinuxprogramming.com/) –
計算後可以簡單地創建儘可能多的孩子。 使用一個循環來創建儘可能多的孩子,並且對於孩子描述符ID變量,可以在運行時(你想要孩子的數量)取一個整數指針併爲它分配一個記憶。然後使用循環簡單地創建子女 –