vfork也可以创建进程,它与fork的区别如下:
- vfork直接使用父进程的存储空间,不拷贝不建立副本。
- vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。
fork与vfork的区别示例:
fork:
可以看到使用fork创建进程是父子进程在同时运行的,在交替打印的。
vfork:
可以看到 vfork是只有在子进程exit后父进程才继续执行,且子进程操作后的cnt,父进程的cnt进行打印页发生了相应的改变,由此可以看出vfork创建的子进程是和父进程共享一片内存空间的。