Я новичок и пытаюсь научиться работать с функциями fork() и wait().Программа Forking/WaitingC. Какой должна быть моя работа? Является ли мой результат правильным?
Может ли кто-нибудь запустить мой код и рассказать мне, что мой вывод должен быть?
Сейчас я получаю: B C B C A D E
Однако мой приятель говорит, что это должно быть: B C A D E A В C
И еще говорит, что это должно быть: B C C D E
Из-за ожидания() функции, я думал, что дочерние процессы должны были закончить до родителя. Вот почему я ожидаю, что результат завершится в «E».
Каковы были бы возможные выходы? Я не понимаю, когда я запускаю его, я получаю ABCABCADE. Не следует ли «А» печатать только один раз для первоначального дочернего процесса?
#include <stdio.h>
#include <unistd.h>
#include <wait.h>
int main(void) {
int pid;
pid= fork();
if (pid == 0) {
fprintf(stdout, "A\n");
pid= fork();
if (pid==0) {
fprintf(stdout, "B\n");
pid=fork();
fprintf(stdout, "C\n");
}
else {
wait(NULL);
fprintf(stdout, "D\n");
}
}
else {
fprintf(stdout, "E\n");
wait(NULL);
}
// your code goes here
return(0);
}
Что вы написали, где «ваш код идет сюда»? В любом случае выход не определен. вы можете получить разные результаты на разных прогонах. Кроме того, вы можете получить разные результаты снова, если вы подключите вывод или перенаправляете вывод в файл. –