1.原先linux的设计是全拷贝
全拷贝就是说:数据段(已经初始化的data段的数据)、堆、栈、打开的文件、IO流等等的拷贝
2.新的linux的设计是写时拷贝
写时拷贝(copy on write):如果代码中一个变量的值不发生改变的话就父子进程共享这个变量,只有在父或子进程对这个变量进行改变时才会在父、子进程的地址空间里面去拷贝一份变量
3.demo
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc,char *argv[])
{
int a = 10;
pid_t repid;
// pid_t fork(void);
repid = fork();
if(repid > 0){
printf("father repid:%d\n a = %d\n",repid,a);
}else if(repid == 0){
a = a + 100;
printf("child repid:%d\n a = %d\n",repid,a);
}
return 0;
}
运行结果: