进程间的通信方式
管道、信号量、消息队列、共享内存
fork系统调用
fork系统调用是复制进程映像的系统调用,
#include<sys/types.h>
#include<unistd.h>
pid_t fork(void);
fork函数的调用都返回两次,父进程返回的是子进程的PID,子进程中返回0;
fork函数复制当前的进程,在内核进程表中创建一个新的进程表项。新的进程表项由很多属性和原进程相同,比如:堆指针、栈指针、标志寄存器的值。子进程和父进程的代码相同;还会复制父进程的数据,数据的复制采用的是写时复制,只有再任一进程对数据进行了写操作时,复制才会发生;使用fork时注意没必要的内存分配和数据复制;