您的位置:首页 > 其它

vfork函数

2016-03-17 17:12 323 查看
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

/*
vfork和fork的区别:
1.vfork创建的子进程和父进程共享线性地址空间;fork创建的子进程具有独立的线性地址空间
2.vfork先执行子进程;fork子进程和父进程的执行顺序是随机的
3.vfork创建的子进程中只有在调用exit()或者execve()函数之后,父进程才可能被成功调用
*/

int main(void)
{
pid_t fpid;

int count = 0;

fpid = vfork();

if (fpid == -1) {
perror("MSG");
}

else if (fpid > 0) {
printf("parrent: %d\n", getpid());
count++;
printf("count: %d\n", count)
}

else if (fpid == 0) {
printf("child: %d\n", getpid());
count++;
printf("count: %d\n", count);
exit(0);
}

return 0;
}

/*
1.执行结果:
child: 13729
count: 1
parrent: 13728
count: 2

2.如果子进程没有调用exit(), 执行结果为:
child: 13729
count: 1
parrent: 13728
count: 1
重复上面的打印结果
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vfork