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 函数可以操作系统调用的内核函数,其他的函数都是复合函数。

相关文章
|
2月前
|
Shell Linux C语言
Linux0.11 execve函数(六)
Linux0.11 execve函数(六)
19 1
|
5月前
|
Shell Linux
|
11月前
|
API 开发工具
【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏
【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏
106 0
|
5月前
|
C语言
C语言 -- CreateProcess创建进程
C语言 -- CreateProcess创建进程
73 4
|
5月前
|
存储 Linux
Linux文件编程(lseek函数和stat函数)
Linux文件编程(lseek函数和stat函数)
89 0
Linux文件编程(lseek函数和stat函数)
|
5月前
|
存储 Unix C语言
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
C语言进程(第三章,exec函数族,execl,execlp,execle,execv,execvp,execve)
100 0
|
5月前
|
安全 Java 程序员
“系统调用”究竟是不是个函数?
- **系统调用**和普通**函数**有何区别? - 什么是**内核态** 和 **用户态**? - 操作系统如何让CPU切换状态? - 内中断、外中断、软中断、硬中断是什么意思? - 库函数和系统调
|
存储 Linux
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
这些函数如果调用成功则加载新的程序从启动代码开始执行,不再返回。
269 0
Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
|
物联网 Linux C语言
Execl 函数|学习笔记
快速学习 Execl 函数
Execl 函数|学习笔记