开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:Execve 函数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/11002
Execve 函数
Execve 函数
这个 execve 比 execv 多了一个 e,这个不仅可以启动这个可执行程序,第一个指针数组是进行可执行程序的传参,第二个指针数组可以改变当前指针数组的环境变量
int execve(const char *pathname,char *const argv[],char *const envp[]);
输入 vi test.c 发现结果不会发生改变
#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;
}
编辑 execve.c
#include
#include
int main(int argc, char *argv[])
{
char *arg[]={“test”,NULL};
char *arge[]={“USER=chongchong”,”GONGSI=QF”}
execve(“./test”,arg,arge);
return 0;
}
输入gcc execve.c -o execve
./execve
运行结果:
可以看到进程的环境变量被改变了,execve只改变当前可执行程序的环境变量。
注意:
在这个六个 exec 函数中只有 execve 函数可以操作系统调用的内核函数,其他的函数都是复合函数。