一、fork函数
可以从一个已存在的进程中创建一个新进程,新进程为子进程,原进程为父进程
#include <unistd.h>
pid_t fork(void);
一个现有进程可以调⽤用fork创建一个新进程。
返回值:子进程中返回0,父进程中返回子进程ID,出错返回-1。
关于fork的问题,通过几个例子看一下
输出结果:
为什么会出现一个这样的结果呢?
调用fork()后,又创建出了一个子进程,所以此时fork的返回值被父子两个进程接收,然后打印两个after
这里为什么是8个“this is …”,也是一个道理
二、vfork函数
vfork()函数也是用来进程的,但与fork()是有所不同的
1、 fork创建子进程后,是父子进程交替运行;而vfork创建子进程后,是父进程等待子进程结束,子进程结束,父进程再进行(此时父进程就成了僵尸进程)