У меня есть следующий код, в котором я пытаюсь создать подпроцессы путем форкирования. Я хочу, чтобы выполнялось ровно 3 подпроцесса. Однако, когда я запускаю код, я, кажется, получаю больше, возможно, из-за того, что дети обрабатывают внуков. Что мне здесь не хватает, как я могу это предотвратить.Предотвращение больших детей от разветвления в C
Код:
for(j = 0; j < 3 ; j++){
if((pid = fork()) == 0){ // child process
dosomething();
exit(0); // terminate child process
}
else if((pid = fork()) > 0){
printf("I'm in parent of the client spawn loop\n");
// exit(0);
}
}
Выход:
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
Вы вызываете fork дважды. –
Да, понял! это было небрежно с моей стороны! грубый случай копирования вставки –