免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 958 | 回复: 0
打印 上一主题 下一主题

exec函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-03 21:16 |只看该作者 |倒序浏览
本文主要参考《unix环境高级编程》

一个创建子进程后,子进程都会调用exec函数执行另一个程序。
exec只是用一个全新的程序代替当前进程的正文,数据,堆和栈段。
一共有6种exec函数,关系可以用下图表示:


字母p表示该函数取filename作为参数,并且用PATH环境变量寻找可执行文件。字母l表示该函数取一个参数表,他与字母v互斥。v表示该函数取一个argv【】矢量。字母e表示该函数取envp【】数组,而不使用当前环境。
下面是调用execle的例子,简化版。
exec函数文件exec.c

#include "apue.h"
      2
      3 char *env_init[] = {"USER=unknow",NULL};
      4
      5 int main(void)
      6 {
      7 pid_t pid;
      8
      9 if ((pid=fork())  0)
     10 err_sys("fork error");
     11 else if (pid == 0) {
     12 if (execle("/home/eelb/apue.2e/myproject/eight/echo","echo","a1","a2",(char *)0,env_init)  0)
     13 err_sys("exec error");
     14 }
     15 exit(0);
     16 }

下面是exec执行的代码echo.c,为了上面的代码运行,echo.c代码要编译成可执行文件命名为echo。

#include "apue.h"
      2
      3 int main(int argc, char *argv[])
      4 {
      5 int i;
      6 char **ptr;
      7 extern char **environ;
      8 for (i=0; iargc; i++)
      9 printf("argv[%d]:%s\n",i,argv);
     10 exit(0);
     11 }




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66435/showart_1358710.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP