【发布时间】:2017-12-16 20:13:53
【问题描述】:
#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”可以作为输出。我不太明白为什么。在我的理解中,总共有四个过程,parent->parent,parent->child,child->parent,child->parent。毫无疑问,child->child 打印 Z。child->parent 在 child->child 打印 Z 之后打印 Y。而 parent->parent 应该等到 parent->child 打印 X。那么为什么 X 可能是打印为输出的最后一个字符?
【问题讨论】: