vfork函数的调用序列和返回值与fork相同,但是语义不同
vfork函数用于创建一个新进程,而该进程的目的是执行一个新程序。
下面是vfork函数和fork函数的区别:
- fork():子进程拷贝父进程的数据段,代码段;vfork(): 子进程与父进程共享数据段
- fork()父子进程的执行次序不确定,vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec或exit 之后父进程才可能被调度运行。
-
vfork()保证子进程先运行,在她调用exec或exit之后父进程才可能被调度运行。如果在
调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。
以上内容来源于网络,仅作本人学习笔记使用,关于本书请参考APUE