저는 초보자이며 fork() 및 wait() 함수를 사용하는 방법을 배우려고합니다.포킹/대기 프로그램. 내 결과는 무엇입니까? 출력이 맞습니까?
누군가 내 코드를 실행하고 내 결과물을 말해 줄 수 있습니까?
지금 내가 점점 오전 : B C B C 에게 D E를
그러나 광산의 친구는 그것이 있어야 말한다 : B C A D E A B C
그리고 다른 하나는 그것이 있어야 말한다 : B C C D E 때문에 대기의
() 함수, 내가 자식 프로세스는 부모 전에 마쳐야했습니다 생각했다. 그래서 나는 결과물이 'E'로 끝나기를 기대한다.
그러면 가능한 출력은 어떻게됩니까? 나는 그것을 실행할 때 나는 ABCABCADE를 이해하지 못한다. 'A'는 초기 자식 프로세스에 한 번만 인쇄하면 안됩니까?
#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);
}
'코드가 여기에 표시됩니다'라는 곳에 무엇을 작성 했습니까? 출력은 어쨌든 확실하지 않습니다. 당신은 다른 실행에 대해 다른 결과를 얻을 수 있습니다. 또한 출력을 파이프하거나 출력을 파일로 재 지정하면 다른 결과를 다시 얻을 수 있습니다. –