#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はXを印刷するまで待つべきです。出力の最後の文字として出力されますか?"X"は出力の最後の文字になるのはなぜですか?
そしてZYYXは最後の位置にXを持つユニークなパターンです。 –