Chinaunix首页 | 论坛 | 博客
  • 博客访问: 594727
  • 博文数量: 107
  • 博客积分: 713
  • 博客等级: 上士
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-05 00:14
个人简介

呵呵

文章分类

全部博文(107)

文章存档

2015年(2)

2014年(17)

2013年(29)

2012年(52)

2011年(7)

分类: LINUX

2012-11-02 21:56:18

exec函数族,顾名思义,就是一簇函数,他把当前替换成新的,而且该程序通常开始执行!
 用fork函数创建子进程后,子进程往往要调用一种exe以执行另一个程序。当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其 main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。有六种不同的exec函数可供使用,它们常常被统称为exec函数。这些exec函数都是UNIX进程控制。用fork可以创建新进程,用exec可以执行新的程序。exit函数和两个wait函数处理终止和等待终止。这些是我们需要的基本的进程控制原语。
现在来看一下exec函数族,先把注意力集中在execve上:
  int execve(const char *path, char *const argv[], char *const envp[]);
  execve第1个参数path是被执行应用程序的完整路径,第2个参数argv就是传给被执行应用程序的命令行参数,第3个参数envp是传给被执行应用程序的环境变量。
  在这里有点要注意,不管是arg0,还是argv[0]都必须是程序的可执行文件的名字,
  execl("/bin/echo", "echo", "executed by execl", NULL)中的echo;
  execl("/bin/ls", "ls", "/azuo", "-la", (char *)0 )中的ls;
  execlp("echo", "echo", "executed by execlp", NULL)中的echo;
阅读(1576) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~