开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:Execle 函数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/10999
Execle 函数
Execle 函数
int execle(const char *pathename,
const char *arg0,***,NULL
char *const envp[]);
这个函数是它既可以启动指定的可执行程序,要想指定参数中传参。后面的多了一个数组,这个数组就是execle函数中最后的e代表的意思,是environment的意思。
这个函数比execl,能够通过指针数组增加参数来改变当前进程的环境变量,运行一个程序是可以看到许多环境变量的。
获得环境变量的代码:
#include
#include
int main(int argc, char *argv[])
{
char *p;
p=getenv(“USER”);
If (p!=NULL)
printf(“USER=%s\n”,p);
p=getenv(“GONGSI”);
if(p!=NULL)
printf(“GONGSI=%s\n”,p);
return 0;
}
执行gcc test.c -o test
ls
execl execl.c execlp execlp.c tags test test.c
在 test 里面获取到的环境变量 ,输入语句./test,运行,
结果如下:结果只显示 edu。
就要启动当下的路径中 test 名字,没有参数,就要将参数删掉,用exec启动参数,在程序中获得进程的环境变量
代码示例:
#include
#include
Int main(int argc,char *argv[])
{
execlp(“./test”,“test” NULL);
printf(“after execlp\n”);
return 0;
}
运行结果:
输入语句 gcc execl.c -o execl
clear
之后输入./execl启动,打印结果如下图,
在输入 : cp execl.c execle.c
修改代码为:
把环境变量进行修改,在test中获得环境变量就能够实现
#include
#include
Int main(int argc,char *argv[])
{
char *p[]={“USER=xiutao”,”GONGSI=qf”};
execle(“./test”,“test”, NULL,p);
printf(“after execlp\n”);
return 0;
}
输入语句: gcc execl.e c -o execl
./execle
运行结果为:
环境变量如下,通过 execle 启动 test 程序时就会大环境变量修改。也就是说 execle 比 execl 多在就是可以修改环境变量,其余的内容和 execl 一样的。
注意:
一旦设置了环境变量,“USER=xiutao”,”GONGSI=qf”,那么其他的环境变量都没有的,可以在path下面查看。
把test.c写一下获取环境变量,再用execle去启动test,通过l启动是一种结果,通过le启动是另一个结果。这是因为le是可用修改当前进程的环境变量,而execl是改不了的。


