进程共享
父子进程相同处:
全局变量、.data、.text、栈、堆、环境变量、用户ID、宿主目录、进程工作目录、信号处理方式
父子进程不同之处:
进程ID、fork返回值、父进程ID,进程运行时间、定时器、未决槽信号
父子进程间遵循读时共享写时复制的原则,节省内存开销
父子进程不共享全局变量
shared.c
#include<stdio.h>
#include<unistd.h>
int var=100;
int main(int argc,char *argv[])
{
pid_t pid=fork();
if(pid==0){
//son
printf("var =%d,child,pid=%d,ppid=%d\n",var,getpid(),getppid());
var=101;
printf("var =%d,child,pid=%d,ppid=%d\n",var,getpid(),getppid());
sleep(3);
}
else if(pid>0){
//parent
sleep(1); //保障子进程能够修改var的值
printf("var =%d,parent,pid=%d,ppid=%d\n",var,getpid(),getppid());
var=102;
printf("var =%d,parent,pid=%d,ppid=%d\n",var,getpid(),getppid());
}
return 0;
}