码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:return   子程序   

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返回时的区别

标签:return   子程序   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!