vfork,fork,exec函数的区别
来源:互联网 发布:淘宝p图软件 编辑:程序博客网 时间:2024/04/30 04:39
http://blog.chinaunix.net/u/24474/showart_198537.html
vfork用于创建一个新进程,而该新进程的目的是exec一个新进程,
vfork和fork一样都创建一个子进程,但是它并不将父进程的地址空间
完全复制到子进程中,因为子进程会立即调用exec,于是也就不会存放该地址空间。
。不过在子进程中调用exec或exit之前,他在父进程的空间中运行。
vfork和fork之间的另一个区别是: vfork保证子进程先运行,在她调用exec或exit之后
父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作
,则会导致死锁。
用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序,
当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数
开始执行,因为调用exec并不创建新进程,所以前后的进程id 并未改变,exec只是用
另一个新程序替换了当前进程的正文,数据,堆和栈段。
回复:
我觉得搞技术的人应该多问问技术背后的历史。
为什么会有vfork,因为以前的fork很傻,当它创建一个子进程时,将会创建一个新的地址空间,并且拷贝父进程的资源,而往往在子进程中会执行exec调用,这样,前面的拷贝工作就是白费力气了,这种情况下,聪明的人就想出了vfork,它产生的子进程刚开始暂时与父进程共享地址空间(其实就是线程的概念了),因为这时候子进程在父进程的地址空间中运行,所以子进程不能进行写操作,并且在儿子“ 霸占”着老子的房子时候,要委屈老子一下了,让他在外面歇着(阻塞),一旦儿子执行了exec或者exit后,相当于儿子买了自己的房子了,这时候就相当于分家了。
其实,现在的fork已经很聪明了,诸如write on copy以及子进程先运行,vfork原来的优势已经没有了,所以希望以后vfork会消失,走向统一!
- vfork,fork,exec函数的区别
- vfork,fork,exec函数的区别
- vfork,fork,exec函数的区别
- vfork,fork,exec函数的区别
- vfork,fork,exec函数的区别
- vfork,fork,exec区别
- fork, vfork, clone, exec的区别
- fork()和vfork()的区别,signal函数用法,exec()系列函数的用法小结
- fork vfork函数区别
- fork vfork函数区别
- Linux下fork()、vfork()、clone()和exec()的区别
- Linux下fork()、vfork()、clone()和exec()的区别
- Linux下fork()、vfork()、clone()和exec()的区别
- fork与vfork函数的区别
- fork和vfork函数的区别
- fork, vfork的区别
- fork,vfork以及exec的意义
- fork vfork exec
- 关于Spring job的配置的资料
- web developer tips (11):在Visual Web Developer中用不同的工具窗口打开样式生成器
- 明星QQ
- 几种网站架设工具的印象
- pb自定义事件详细解释
- vfork,fork,exec函数的区别
- Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别
- 验证网址URL的正则表达式
- 开源.Net应用系统框架Websharp
- Gate A20与保护模式
- 灵活权限控制的DevFx.NET开发框架
- Turbocharge SQL with advanced Oracle indexing
- MVC框架PixelDragonsMVC.NET
- Linux常用C函数—信号处理篇