首页 > 其他 > 详细

fork与vfork区别及用exit于return返回时的区别

时间:2016-04-08 15:22:22      阅读:139      评论:0      收藏:0      [点我收藏+]

fork()与vfork()区别:

1.fork()父子进程的执行次序不确定,它们的调度顺序由调度器说了算。而vfork()保证子程序先运行,在调用exit或者exec前父子进程数据共享,在子进程调用exit或exec退出后父进程才能被调度运行。

2.fork()子进程会拷贝父进程的数据段,而vfork()父子进程共享数据段。

return与exit返回时的区别:

首先结束子进程的调用需要用exit(),因没有修改函数栈,若在vfork中return,那就意味在main函数中return,这是因为父子进程共享函数栈。由于main函数也是被启动例程调用的,因此main函数return后就返回到启动例程中,而main函数return后还会调一些exit()相似函数。

因return会释放局部变量,并弹栈,回到上级函数执行,而exit(它不是系统调用,时glibc对系统调用_exit()的封装)直接退掉。


fork与vfork区别及用exit于return返回时的区别

原文:http://10541559.blog.51cto.com/10531559/1761727

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!