Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50312
  • 博文数量: 25
  • 博客积分: 166
  • 博客等级: 入伍新兵
  • 技术积分: 177
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-28 08:57
文章分类

全部博文(25)

文章存档

2015年(2)

2013年(1)

2012年(18)

2011年(4)

我的朋友

分类:

2012-05-06 13:17:38

vfork用于创建一个新进程,而该新进程的目的是exec一个新进程,
vfork和fork一样都创建一个子进程,但是它并不将父进程的地址空间
完全复制到子进程中,因为子进程会立即调用exec,于是也就不会存放该地址空间。
。不过在子进程中调用exec或exit之前,他在父进程的空间中运行。


vfork和fork之间的另一个区别是: vfork保证子进程先运行,在她调用exec或exit之后
父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作
,则会导致死锁。


用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序,
当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数
开始执行,因为调用exec并不创建新进程,所以前后的进程id 并未改变,exec只是用
另一个新程序替换了当前进程的正文,数据,堆和栈段。 
阅读(256) | 评论(0) | 转发(0) |
0

上一篇:嵌入式系统的开发流程

下一篇:数组全排

给主人留下些什么吧!~~