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