我想知道 shell 里的 if, while 等语句是怎么实现的

1 #include <unistd.h>
2 #include <stdio.h>
3 #include<stdlib.h>
4 int glob=6;
5 char buf[]="a write to stdout\n";
6 int main(void)
7 {
8 int var;
9 pid_t pid;
10 var=88;
11 if(write(STDOUT_FILENO,buf,sizeof(buf)-1) !=sizeof(buf)-1)
12 { printf("write error");}
13 printf("before fork\n");
14 if (pid=fork()<0){
15 printf("fork error");}
16 if (0==pid){
17 glob++;
18 var++;
19 }
20 sleep(2);
21 printf("pid=%d,golb=%d,var=%d\n",getpid(),glob,var);
22 exit(0);
23 }
24
administrator@ubuntu:~/gaoji$ ./a.out
a write to stdout
before fork
pid=2559,golb=7,var=89
pid=2558,golb=7,var=89
administrator@ubuntu:~/gaoji$


我想知道为什么,这里父进程,和子进程共用变量的内存空间的!!
这是APUE里面的题!!!

作者: 儒家辉少   发布时间: 2011-05-08