3. 进程API之创建进程 fork、vfork函数
3.1 fork函数
3.1.1 fork 函数原型
Fork 的英文意思是叉子 ,意思是 从一个进程分出多个进程 (两个执行流)。
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
返回值:
- 返回0 : 子进程的执行流
- 返回>0:父进程的执行流
- 返回-1: 创建失败
功能:
- 创建一个进程。
fork函数的特点:
- fork被调用一次,但返回两次。唯一的区别是在子进程里返回值是0,而在父进程里其返回值是子进程的进程ID。
3.1.2 fork 创建进程的系统中的体现
- 内核为子进程创建了一个新的task_struct结构。
- 子进程几乎是父进程的克隆体,它将获得父进程数据空间、堆、栈等资源的副本。
- 但是task_struct结构有部分内容不一样。比如process id 等。
- 父进