Я изучаю процесс разветвления и пытаюсь код листинга 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
Принимая во внимание, что образец страницы показывает вывод потомка потом, а потом родителя?Я не понимаю этого.
Кроме того, когда я запускаю код в своей лаборатории, я получаю вывод, как показано на странице.Большое спасибо за то, что не смогли ответить на этот наивный вопрос.
Если это имеет значение, я использую Ubuntu 11.04.