进程管理中vfork函数

vfork函数的调用和返回值与fork函数的相同,但是两者的功能有所不同。
1.fork创建的子进程会复制其父进程的数据段和堆栈段;vfork的父进程共享数据段。
2.vfork并不会把父进程的地址空间完全复制给子进程,因为子进程会立刻调用exec或者exit,也就不会访问该地址空间,只在子进程调用exec之前,在父进程空间中运行。
3.vfork函数保证子进程先运行,在它调用exec或者exit之后父进程才可以调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步操作,将会导致死锁。
vfork函数的用法演示:
进程管理中vfork函数
进程管理中vfork函数
从程序的运行结果来看,子进程对变量做了+1操作,结果父进程又改变了子进程的变量值并继续+1。因为vfork的子进程在父进程的地址空间内运行,属于一个地址空间,而fork是子进程和父进程运行在不同的地址空间中,