在学linux进程管理中有个fork系统调用,它是什么作用呢?我们来分析下
这是我们fork.c文件里面代码
我们执行完fork.c文件后发现多一个2
这是什么原因呢?我们进一步添加我们的代码进行分析
这是我们获取进程的代码,PID为当前进程ID,PPID为父进程ID
继续执行程序,我们发现
生成两个进程,其中一个进程是原先的进程,而且父进程不一样
分析内核:fork系统之前只有一个进程,fork之后又两个进程,其实在fork之前有一个PCB(内核stat_struct)指向代码段,数据段,堆栈段,fork之后生成新的PCB,复制一份代码段,数据段,堆栈段,PCB函数指针指向代码段,数据段,堆栈段。此时有两个PCB,则有两个进程。复制前PCB函数指针指向fork系统调用,复制完也是指向系统调用。故代码都是从fork系统调用开始跑,所以fork之后的代码实现两次(两个进程各自实现一次)。