您的位置:首页 > 其它

vfork()系统调用

2015-12-25 22:13 162 查看
vfork()学习

vfork()与fork()的一个重要区别, 等待子进程退出后, 父进程才会执行.

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int globVar = 5;

int main(void)
{
pid_t  pid;
int    var = 1, i;

printf("fork is diffirent with vfrok \n");

pid = vfork();

switch(pid) {
case 0:
i = 3;
while(i-- > 0)
{
printf("Child process is running\n");

globVar++;
var++;

sleep(1);
}
printf("Child's globVar = %d,var = %d, pid = %d\n",globVar,var,getpid());
break;
case -1:
perror("Process creation failed\n");
exit(0);
default:
i = 5;
while(i-- > 0)
{
printf("Parent process is running\n");

globVar++;
var++;

sleep(1);
}
printf("Parent's globVar = %d ,var = %d, pid = %d\n", globVar ,var,getpid());
exit(0);
}
}


编译/链接/运行结果如下:



父进程会等待子进程执行, 完成退出后, 父进程才会执行.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: