Linux 编程的 fork 和 vfork 的区别
fork函数:
一个进程可以调用fork函数创建一个新进程
#include<unistd.h>
pid_t fork(); //返回值:子进程返回0,父进程返回子进程ID,若出错返回-1
需要注意的是fork函数调用一次返回两次,子进程的返回值是0,父进程的返回值是子进程的PID,因此通常利用这个区别去设置判断语句令父子进程执行不同的操作。
现在的操作系统基本都采用了COW机制,因此不再是完全的拷贝父进程的所有内容了。将会对父进程区域进行一个共享,内核将其权限改为只读,如果父子进程中任何一个进程要修改该内容,则引发页错误并对其进行一个拷贝然后再写。
因为fork函数有两个返回值,还要注意的是一旦调用fork函数