#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
if (fork() == fork()){
fprintf(stderr, "Z");
}
else {
if (waitpid((pid_t)-1,NULL,0)!=-1) {
fprintf(stderr, "Y");
}
else {
fprintf(stderr, "X");
}
}
}
나는이 프로그램을 연구하면서 "ZYYX"가 출력물이 될 수 있다는 것을 알았습니다. 나는 왜 그런지 이해하지 못한다. 저의 이해에 따르면 부모 -> 부모, 부모 -> 자식, 자식 -> 부모, 자식 -> 부모의 총 4 가지 과정이 있습니다. 그리고 child-> child는 Z를 인쇄하고, child-> parent는 Z를 인쇄 한 후에 Y를 인쇄합니다. 그리고 parent-> parent는 parent-> child가 X를 인쇄 할 때까지 대기해야합니다. 왜 X가 출력의 마지막 문자로 인쇄됩니까?왜 "X"가 출력의 마지막 문자가 될 수 있습니까?
그리고 ZYYX는 마지막 위치에 X가있는 독특한 패턴입니다. –