exec函数簇

exec一共有六种函数,都是以exec开头。

 

1 int execl(const char *path, const char *arg, ...);
2 int execlp(const char *file, const char *arg, ...);
3 int execle(const char *path, const char *arg, ..., char * const envp[]);
4 int execv(const char *path, char *const argv[]);
5 int execvp(const char *file, char *const argv[]);
6 int execve(const char *path, char *const argv[], char *const envp[]);

 

后缀含义
ll代表list,接受以逗号的参数,最后是以(char *)0结束。
vv代表vector,接受参数数组,数组以NULL结束。
pp代表取用PATH环境环境寻找可执行文件,不需要单独传入一个路径参数。
e取代当前的环境环境

主程序

 1 #include <stdio.h>
 2 #include <unistd.h>
 3 #include <sys/wait.h>
 4 #include <errno.h>
 5 extern char **environ;
 6 int main(){
 7     char *env[]={"USER=hh","PATH=/home/map/users",NULL};
 8     int pid;
 9     if((pid=fork())<0){
10         perror("fork error;");
11     }else if(pid==0){
12         execle("/home/map/users/maxin/cpp/chr08/test","test","hello","world",(char *)0,env);
13         perror("exec error:");
14     }
15     if(waitpid(pid,NULL,0)!=pid){
16         perror("wait error");
17     }
18     printf("----------------------------------------\n");
19     if((pid=fork())<0){
20         perror("fork error;");
21     }else if(pid==0){
22         execle("/home/map/users/maxin/cpp/chr08/test","test","hello","world",(char *)0,environ);
23         perror("exec error:");
24     }
25     if(waitpid(pid,NULL,0)!=pid){
26         perror("wait error");
27     }
28 
29     printf("----------------------------------------\n");
30     if((pid=fork())<0){
31         perror("fork error;");
32     }else if(pid==0){
33         execlp("./test","./test","hello",(char *)0);
34         perror("exec error:");
35     }
36     if(waitpid(pid,NULL,0)!=pid){
37         perror("wait error");
38     }
39 }

被调用的程序

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 extern char **environ;
 4 void showEnv();
 5 int main(int args,const char *argv[]){
 6     printf("args%d\n",args );
 7     for(int i=0;i!=args;++i){
 8         printf("argv[%d]:%s\n",i,argv[i]);
 9     }
10     printf("USER:%s\n", getenv("USER"));
11     printf("PATH:%s\n", getenv("PATH"));
12     showEnv();
13 }
14 void showEnv(){
15     int i=0;
16     while(environ[i]){
17         printf("environ[%d]:%s\n",i,environ[i] );
18         ++i;
19     }
20     printf("----------------------END---------------------------\n" );
21 }

 最后的显示结果

args3
argv[0]:test
argv[1]:hello
argv[2]:world
USER:hh
PATH:/home/map/users
environ[0]:USER=hh
environ[1]:PATH=/home/map/users
----------------------END---------------------------
----------------------------------------
args3
argv[0]:test
argv[1]:hello
argv[2]:world
USER:map
PATH:/home/tools/tools/svn/1.6.5/64/bin:/home/tools/tools/scmtools/usr/bin:/home/tools/tools/../bin/64/:/home/tools/tools/maven/apache-maven-2.2.0/bin:/home/tools/tools/ant/apache-ant-1.6.5/bin:/home/tools/tools/ant/apache-ant-1.7.1/bin:/home/tools/tools/php/5.2.17/64/bin:/java/jdk1.6.0_06/bin:/java/jdk1.6.0_06/jre/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/share/*****/bin:/opt/bin:/home/opt/bin:/home/map/bin:/home/work/.nlpcloud/nlpc/bin:/home/work/.qu/qu:/home/map/bin:/home/map/users/yinsongyang/fis/node-v0.10.26-linux-x64/bin:/home/map/users/yinsongyang/fis/jre1.7.0_55/bin:/home/map/odp24/php/bin
environ[0]:MAC=64
environ[1]:MANPATH=:/tools/*****_manpage/man
environ[2]:HOSTNAME=cq01-rdqa-*****.*****.*****.com
environ[3]:TERM=vt100
environ[4]:SHELL=/bin/bash
environ[5]:HISTSIZE=1000
environ[6]:SSH_CLIENT=172.22.4.13 36038 22
environ[7]:OLDPWD=/home/map/users/maxin/cpp
environ[8]:MAVEN_2_2_1=/home/tools/tools/maven/apache-maven-2.2.1/bin
environ[9]:SSH_TTY=/dev/pts/2
environ[10]:MAVEN_3_0_4=/home/tools/tools/maven/apache-maven-3.0.4/bin
environ[11]:ANT_HOME=/home/tools/tools/ant/apache-ant-1.6.5
environ[12]:USER=map
environ[13]:LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
environ[14]:MAIL=/var/spool/mail/map
environ[15]:PATH=/home/tools/tools/svn/1.6.5/64/bin:/home/tools/tools/scmtools/usr/bin:/home/tools/tools/../bin/64/:/home/tools/tools/maven/apache-maven-2.2.0/bin:/home/tools/tools/ant/apache-ant-1.6.5/bin:/home/tools/tools/ant/apache-ant-1.7.1/bin:/home/tools/tools/php/5.2.17/64/bin:/java/jdk1.6.0_06/bin:/java/jdk1.6.0_06/jre/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/share/*****/bin:/opt/bin:/home/opt/bin:/home/map/bin:/home/work/.nlpcloud/nlpc/bin:/home/work/.qu/qu:/home/map/bin:/home/map/users/yinsongyang/fis/node-v0.10.26-linux-x64/bin:/home/map/users/yinsongyang/fis/jre1.7.0_55/bin:/home/map/odp24/php/bin
environ[16]:INPUTRC=/etc/inputrc
environ[17]:PWD=/home/map/users/maxin/cpp/chr08
environ[18]:JAVA_HOME=/java/jdk1.6.0_06
environ[19]:LANG=en_US
environ[20]:JAVA_HOME_1_6=/home/tools/tools/java/jdk1.6.0_20
environ[21]:JAVA_HOME_1_5=/home/tools/tools/java/jdk1.5.0_07
environ[22]:ANT_HOME_1_7=/home/tools/tools/ant/apache-ant-1.7.1
environ[23]:SHLVL=1
environ[24]:HOME=/home/map
environ[25]:LOGNAME=map
environ[26]:CLASSPATH=:/java/jdk1.6.0_06/lib:/java/jdk1.6.0_06/jre/lib
environ[27]:SSH_CONNECTION=172.22.4.13 36038 10.48.52.44 22
environ[28]:PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:
environ[29]:LESSOPEN=|/usr/bin/lesspipe.sh %s
environ[30]:G_BROKEN_FILENAMES=1
environ[31]:_=./a.out
----------------------END---------------------------
----------------------------------------
args2
argv[0]:./test
argv[1]:hello
USER:map
PATH:/home/tools/tools/svn/1.6.5/64/bin:/home/tools/tools/scmtools/usr/bin:/home/tools/tools/../bin/64/:/home/tools/tools/maven/apache-maven-2.2.0/bin:/home/tools/tools/ant/apache-ant-1.6.5/bin:/home/tools/tools/ant/apache-ant-1.7.1/bin:/home/tools/tools/php/5.2.17/64/bin:/java/jdk1.6.0_06/bin:/java/jdk1.6.0_06/jre/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/share/*****/bin:/opt/bin:/home/opt/bin:/home/map/bin:/home/work/.nlpcloud/nlpc/bin:/home/work/.qu/qu:/home/map/bin:/home/map/users/yinsongyang/fis/node-v0.10.26-linux-x64/bin:/home/map/users/yinsongyang/fis/jre1.7.0_55/bin:/home/map/odp24/php/bin
environ[0]:MAC=64
environ[1]:MANPATH=:/tools/*****_manpage/man
environ[2]:HOSTNAME=cq01-rdqa-*****.*****.*****.com
environ[3]:TERM=vt100
environ[4]:SHELL=/bin/bash
environ[5]:HISTSIZE=1000
environ[6]:SSH_CLIENT=172.22.4.13 36038 22
environ[7]:OLDPWD=/home/map/users/maxin/cpp
environ[8]:MAVEN_2_2_1=/home/tools/tools/maven/apache-maven-2.2.1/bin
environ[9]:SSH_TTY=/dev/pts/2
environ[10]:MAVEN_3_0_4=/home/tools/tools/maven/apache-maven-3.0.4/bin
environ[11]:ANT_HOME=/home/tools/tools/ant/apache-ant-1.6.5
environ[12]:USER=map
environ[13]:LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
environ[14]:MAIL=/var/spool/mail/map
environ[15]:PATH=/home/tools/tools/svn/1.6.5/64/bin:/home/tools/tools/scmtools/usr/bin:/home/tools/tools/../bin/64/:/home/tools/tools/maven/apache-maven-2.2.0/bin:/home/tools/tools/ant/apache-ant-1.6.5/bin:/home/tools/tools/ant/apache-ant-1.7.1/bin:/home/tools/tools/php/5.2.17/64/bin:/java/jdk1.6.0_06/bin:/java/jdk1.6.0_06/jre/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/share/*****/bin:/opt/bin:/home/opt/bin:/home/map/bin:/home/work/.nlpcloud/nlpc/bin:/home/work/.qu/qu:/home/map/bin:/home/map/users/yinsongyang/fis/node-v0.10.26-linux-x64/bin:/home/map/users/yinsongyang/fis/jre1.7.0_55/bin:/home/map/odp24/php/bin
environ[16]:INPUTRC=/etc/inputrc
environ[17]:PWD=/home/map/users/maxin/cpp/chr08
environ[18]:JAVA_HOME=/java/jdk1.6.0_06
environ[19]:LANG=en_US
environ[20]:JAVA_HOME_1_6=/home/tools/tools/java/jdk1.6.0_20
environ[21]:JAVA_HOME_1_5=/home/tools/tools/java/jdk1.5.0_07
environ[22]:ANT_HOME_1_7=/home/tools/tools/ant/apache-ant-1.7.1
environ[23]:SHLVL=1
environ[24]:HOME=/home/map
environ[25]:LOGNAME=map
environ[26]:CLASSPATH=:/java/jdk1.6.0_06/lib:/java/jdk1.6.0_06/jre/lib
environ[27]:SSH_CONNECTION=172.22.4.13 36038 10.48.52.44 22
environ[28]:PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:
environ[29]:LESSOPEN=|/usr/bin/lesspipe.sh %s
environ[30]:G_BROKEN_FILENAMES=1
environ[31]:_=./a.out
----------------------END---------------------------

 

转载于:https://www.cnblogs.com/HPhone/p/3870046.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gdb基础知识

文档 一.gdb打印demo.cpp运行结果 在CMakeLists.txt中添加 set(CMAKE_BUILD_TYPE Debug) 然后make以后通过gdb filename进入该文件的gdb调试模式,同时使用shell 就可以像终端一样使用shell命令。 例子: demo.cpp #include <iostream> #include <vector> #i…

重磅!罗振宇跨年演讲:扎心5问

来源&#xff1a;亿欧网摘要&#xff1a;我们不断追问“这个世界到底是什么样子的&#xff1f;”今年罗振宇在“2018时间的朋友跨年演讲”中给出的解题思路是&#xff1a;小趋势。2018年12月31日晚&#xff0c;“2018时间的朋友跨年演讲”在深圳春茧体育馆拉开帷幕。从4000人的…

C++ opencv的一些基础知识

一&#xff0e;基础知识 1.cv::mat type返回数字对应的类型 C1, C2, C3, C4 指的是通道(Channel)数&#xff0c;比如3通道的float 32&#xff1a; cv::Mat M5 cv::Mat::zeros(2, 3, CV_32FC(3)); 2.at方法数据类型 知道通道数和每个通道数据类型的情况下&#xff0c;指定给…

centos 6.5 x64编译有python的vim7.4

wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gzwget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gzwget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 下载后&#xff0c;解压 tar jxf vim-7.4.tar.bz2tar zxf vim-7.2-extra.tar.gztar zxf vim-7.2-l…

难以想象!未来十年,颠覆性技术将带来这些社会变革……

作者&#xff1a;张一清来源&#xff1a;财新《中国改革》摘要&#xff1a;技术飞速进步改变生活&#xff0c;人类是否准备好迎接它们给生活、制度和文化带来的挑战&#xff1f;现代社会&#xff0c;技术的更新速度永远比你想得更快。当感叹技术的飞速进步&#xff0c;当憧憬技…

硬件工程师电路设计必须紧记的十大要点

一、电源是系统的血脉&#xff0c;要舍得成本&#xff0c;这对产品的稳定性和通过各种认证是非常有好处的。1.尽量采用∏型滤波&#xff0c;增加10uH电感&#xff0c;每个芯片电源管脚要接104旁路电容;2.采用压敏电阻或瞬态二极管&#xff0c;抑制浪涌&#xff1b;3.模电和数电…

C++模板的一些基础知识

一.函数模板 可看出就是将函数返回类型和形参类型去掉。 1.代码1 #include <iostream> #include <vector> #include <string> #include <algorithm> #include <map> #include <fstream> using namespace std;template<typename T>…

芯片热!价格战!争落地!2018年人工智能发展回忆录

来源&#xff1a;网易智能摘要&#xff1a;2018年是非同寻常的一年&#xff0c;对于人工智能行业而言更是如此。在这一年&#xff0c;几乎所有科技公司宣布全面拥抱AI&#xff0c;在这一年&#xff0c;巨头深入布局&#xff0c;挤压着创业者的想象空间&#xff0c;在这一年&…

如何附加数据库

转载于:https://www.cnblogs.com/tanqianqian/p/5975072.html

a16z基金:顶级风投眼中的2019技术趋势

来源&#xff1a;资本实验室位于硅谷的顶级风险投资公司——安德森霍洛维兹基金&#xff08;Andreessen Horowitz&#xff0c;简称a16z&#xff09;在近期提出了他们将在2019年遵循的五大技术趋势&#xff0c;涉及生物医疗、数字货币与区块链、人工智能等技术领域。从字面上来看…

CXF 调用C#.net的WebService

原文链接&#xff1a;http://hi.baidu.com/pengfeiiw/blog/item/3203e29065aa3a8aa977a4d0.html 1.编写C#.net的WebService Service.cs using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols; [WebService(Namespace "http://l…

新算力下的2019 AI

来源&#xff1a;乐晴智库精选▌AI步入下半场IT每十年一阶段形成六大阶段每一轮科技革命都会带来新的赢家基础设施—通用平台—应用层的发展路径每一轮科技革命均印证基础设施先行的发展路径基础设施与通用平台易形成寡头垄断应用层的发展愈来愈依托于生态云计算厂商的资本开支…

leetcode动态规划(python与c++)

1 . 斐波那契数 class Solution:def fib(self, n: int) -> int:# if n0:# return 0# elif n1:# return 1# else:# return self.fib(n-1)self.fib(n-2)a 0b 1for i in range(n):a,b b,abreturn a class Solution { public:int fib(int n) {int a 0, b 1;fo…

CSDN之人人code,整数取反

题目描述&#xff1a;要求实现把给定的一个整数取其相反数的功能&#xff0c;举两个例子如下&#xff1a;x 123, return 321 x -123, return -321&#xff1b; 解题思路&#xff1a;对int a进行判断&#xff0c;如果a的大小不等于0&#xff1b;则定义一个变量temp等于temp*10…

算法总结之欧拉函数中国剩余定理

算法总结之欧拉函数&中国剩余定理 1.欧拉函数 概念&#xff1a;在数论&#xff0c;对正整数n&#xff0c;欧拉函数是少于或等于n的数中与n互质的数的数目。 通式&#xff1a;φ(x)x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn) 其中p1, p2……pn为x的所有质因数&#xf…

互联网50年类脑架构技术演化图

作者&#xff1a;刘锋 计算机博士 互联网进化论作者摘要&#xff1a;不断的有著名科学家或企业家提出互联网已死&#xff0c;将被新技术取代&#xff0c;最近绘制了一幅互联网50年的技术演化图&#xff0c;试图说明互联网从1969年四台计算机的网状结构发展成2019类脑结构的过程…

小孔成像中四个坐标系转换

一.小孔成像基础知识: 1.1透镜成像原理 如图所示&#xff1a; 其中 u 为物距&#xff0c; f 为焦距&#xff0c;v 为相距。三者满足关系式&#xff1a; 相机的镜头是一组透镜&#xff0c;当平行于主光轴的光线穿过透镜时&#xff0c;会聚到一点上&#xff0c;这个点叫做焦点&…

不带头结点的单链表的建立

建立该链表利用的是尾插法 // 创建一个单链表&#xff0c;没有头结点&#xff0c; #include <iostream> #include <ctime>using namespace std; //------------------------------------------------ //************************************************ // 结构名…

page.ClientScript.RegisterStartupScript

page.ClientScript.RegisterStartupScript&#xff08;&#xff09;可以添加客户端脚本&#xff0c;有4个参数 type&#xff1a;要注册的启动脚本的类型。key&#xff1a;要注册的启动脚本的键。script&#xff1a;要注册的启动脚本文本。addScriptTags&#xff1a;指示是否添加…

这10项机器人领域的核心技术,你了解多少

来源&#xff1a;机器人创新生态NO 1&#xff0e;人机对话智能交互技术这项技术能让人类做到真正与机器智能的对话交流&#xff0c;机器人不仅能理解用户的问题并给出精准答案&#xff0c;还能在信息不全的情况下主动引导完成会话。当前这一块做得比较成熟的谷歌与Facebook。NO…