创建新进程的方法有fork()或vfork()。
vfork后一般会调用exec一个新程序。
书apue中有介绍p176。
区别:
(1)
vfork与fork都是创建进程,但vfork不完全复制父进程的地址空间。
fork :子进程从父进程那得到数据段和堆栈段等,但不是与父进程共享而是单独分配内存。
vfork:在没调用exec或exit之前子进程的运行是与父进程共享数据段的。
(2)
fork :(执行顺序不确定)子进程与父进程的运行是无关的,父进程可先于子进程运行,子进程也可先于父进程运行。
vfork:子进程要先于父进程运行。在执行exec和exit后,父进程才能被调度。
相同:
俩者都是调用一次返回俩次,分别是0,和子进程pid值。