Я пишу AC-программу в Ubuntu, и в коде я использую fork () для генерации 5 разных дочерних элементов.Но когда я компилирую и запускаю свою программу, дочерние элементы не создаются, а printf («Test»), который я помещаю в три оператора if (для case fork () == 0,> 0, <0), только в> 0, там в выводе операторов printf.
На самом деле некоторое время назад fork () работал просто отлично, но после того, как я продолжил свою работу над программой, он вдруг не работает.
Почему это происходит и как мне это исправить?это?
for (i = 0; i < proc; ++i){
printf("In for %d",i);
// TODO
int fork_result = fork();
if (fork_result == 0){ // Create child process
child_pids[i] = getpid();
printf("Test 5");
printf("In if %d",i);
break;
}
else if(fork_result < 0){
printf("Fork failed");
}
else if (fork_result > 0){
printf("Parent");
}
}
Что ж, ожидаемый результат состоит в том, что он будет содержать «Тест 5» или «В случае»
Фактический результат:
In for 0In for 1In for 2In for 3In for 4
КакойФактический вывод не содержит "Тест 5"