我正在学习process forking,我正在尝试列出3的代码:
sunbox$ cat fork2.c
#include <unistd.h>
#include <stdio.h>
int main (void) {
pid_t p;
printf("Original program, pid=%d\n", getpid());
p = fork();
if (p == 0) {
printf("In child process, pid=%d, ppid=%d\n",
getpid(), getppid());
} else {
printf("In parent, pid=%d, fork returned=%d\n",
getpid(), p);
}
}
sunbox$ gcc fork2.c -o fork2
sunbox$ ./fork2
Original program, pid=767
In child process, pid=768, ppid=767
In parent, pid=767, fork returned=768
我得到的输出:
Original program, pid=2728 In parent, pid=2728, fork returned=2731 In child process, pid=2731, ppid=2728
然后示例页面首先显示child的输出,然后显示parent的输出?我不明白这一点。
另外,当我在大学实验室中运行代码时,我会得到如页面所示的输出。非常感谢提前回答这个天真的问题。
如果重要,我正在运行Ubuntu 11.04。