直接上代码,第一个程序没有对fork()进行出错判断,第二个程序进行了fork()出错判断,但是两个程序的输出却截然不同,这是为什么?
/*程序1, 程序2为去掉后面的注释*/
1 #include <stdlib.h>
2 #include <unistd.h>
3 #include <stdio.h>
4
5 int main(void)
6 {
7 pid_t pid;
8
9 pid = fork();
10
11 if (pid > 0)
12 {
13 while (1) {
14 printf("I am parent.\n");
15 printf("parent PID is %d\n", getpid());
16 sleep(1);
17 }
18 }
19 else if (pid == 0)
20 {
21 while(1) {
22 printf("I am child.\n");
23 printf("child PID is %d\n", getpid());
24 sleep(1);
25 }
26 }
27 // else
28 // {
29 // perror("fork");
30 // exit(1);
31 // }
32
33 return 0;
34 }
程序1的输出结果没有逻辑
程序2的输出交替有序
这是为什么