1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 int global = 1;/*初始化的全局变量,存在data段*/
5
6 int main(void)
7 {
8 pid_t pid;/*存储进程id*/
9 int stack = 1;/*局部变量,存在栈中*/
10 int *heap;/*指向堆变量的指针*/
11 heap = (int*)malloc(sizeof(int));
12 *heap = 3;/*设置堆中的值是3*/
13 pid = fork();/*创建一个新线程*/
14 if(pid < 0){
15 perror("fail to fock!\n");
16 exit(-1);
17 }
18 else if(pid == 0){
19 /*子进程,改变变量的值*/
20 global++;
21 stack++;
22 (*heap)++;
23 /*打印出变量的值*/
24 printf("In Sub-process,global: %d,stack: %d,heap: %d\n",global,stack,*heap);
25 exit(0);
26 }
27 else{
28 /*父进程*/
29 sleep(2);/*休眠2秒钟,确保子进程执行完毕,在执行父进程*/
30 printf("In Parent,global: %d,stack: %d,heap: %d\n",global,stack,*heap);
31 }
32 return 0;
33 }