// p2.c —— 原书 Figure 5.2:fork() + wait(),输出顺序变得确定 #include #include #include #include int main(int argc, char *argv[]) { printf("hello (pid:%d)\n", (int) getpid()); int rc = fork(); if (rc < 0) { // fork failed; exit fprintf(stderr, "fork failed\n"); exit(1); } else if (rc == 0) { // child (new process) printf("child (pid:%d)\n", (int) getpid()); } else { // parent goes down this path int rc_wait = wait(NULL); printf("parent of %d (rc_wait:%d) (pid:%d)\n", rc, rc_wait, (int) getpid()); } return 0; }