fork函数
作用
在前面的博客中已经提到过fork这个函数,它的作用就是从已存在的进程中创建一个新进程。
新进程为子进程,而原来的进程为父进程。
返回值
-1 | 创建失败 |
0 | 创建成功,且为子进程的返回值 |
>1 | 创建成功,且为父进程的返回值,返回值为子进程pid |
在fork函数期间,内核会做什么?
- 以父进程为模版,创建子进程
- 把父进程的PCB拷贝一份,稍加修改,成为子进程的PCB
- 把父进程的虚拟空间拷贝一份,作为子进程的地址空间(⚠️:1、这里地址空间为虚拟地址空间,并非物理地址空间,父子进程虚拟地址相同,但是物理地址不同;2、这里的拷贝为写时拷贝,父子进程共用一份代码,但是各自有一份数据)
- 添加子进程到系统进程列表当中