除了fork函数以外,我们还需要这样一个函数:vfork函数
与fork函数不一样的是:vfork保证子进程优先运行而父进程
废话不多说还是实战能让人更清楚明白:
如何让子进程优先进行呢?这么编写代码:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
int times;
times==0;
pid_t pid;
pid=vfork();
if(pid>0)
{
while(1){
printf("this is father pid,pid=%d\n",getpid());
sleep(1); //如同延时
}
}
if(pid==0)
{
while(1){
printf("this is child pid,pid=%d\n",getpid());
sleep(1);
times++;
if(times>3){break;} //在上面如果我不定义times
这个子进程就会一直一直运行,永远不运行父进程
}
}
return 0;
}
那么我们运行一下看看是否四秒后,子进程会停止转而运行父进程:
如此间的,我们的子进程在四秒后结束,父进程开始运行
这个就是vfork函数的运用