Execve 函数|学习笔记

简介: 快速学习 Execve 函数

开发者学堂课程【物联网开发- 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只改变当前可执行程序的环境变量。

image.gif注意:

在这个六个 exec 函数中只有 execve 函数可以操作系统调用的内核函数,其他的函数都是复合函数。

相关文章
|
6月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
266 6
|
API 开发工具
【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏
【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏
149 0
|
10月前
|
C语言
C语言 -- CreateProcess创建进程
C语言 -- CreateProcess创建进程
92 4
|
10月前
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
263 0
|
Ubuntu 编译器
【C库函数】memcpy函数详解
【C库函数】memcpy函数详解
【C库函数】memcpy函数详解
|
安全 编译器
【C库函数】strncpy函数详解
【C库函数】strncpy函数详解
【C库函数】strncpy函数详解
|
存储 Linux
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
344 0
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)

热门文章

最新文章