0
我有以下程序創建特定數目的子進程,說20保持相同數量的子進程
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#define NITER 20
int main()
{
pid_t pid;
int i;
printf("\nExemplo de aplicacao 02 da funcao fork()\n");
printf("Processo pai inicial tem PID=%5d\n", (int) getpid());
for(i=1; i<=NITER; i++) {
pid= fork();
if (pid==-1) {
perror("Erro na funcao fork()");
exit(1);
}
if (pid) {
/* pid>0, codigo para o processo pai */
printf("Codigo do Pai (i=%2d): PID=%5d PPID=%5d\n", \
i, (int) getpid(), (int) getppid());
}
else {
/* pid=0, codigo para o processo filho */
printf("Codigo do Filho(i=%2d): PID=%5d PPID=%5d\n", \
i, (int) getpid(), (int) getppid());
}
}
return 0;
}
我想改變它,以這樣的方式,我要確保我只有4個子進程同時運行。它需要檢查是否有一個4結束並自動創建一個新的。這直到達到20的數量。任何人都可以幫忙嗎?
Thks。我不太熟悉等待選項。你可以在代碼中顯示嗎? – user3038679
看我的編輯。沒有測試,但應該給你一些提示。 – Chnossos
+1,但您可能想要waitpid> 0,否則當存在尚未更改狀態的現有子項時,您將繼續遞減process_count。沒有辦法避免持續輪詢waitpid而不進行睡眠或將其更改爲使用信號處理程序。 – Duck