作者:熊轶翔@熊仙僧,中国科学院软件研究所智能软件研究中心
在上一章我们学习了进程的创建过程,但是新进程在被创建之后还如果要运行新的代码,这个时候就轮到execve()
系统调用出场了,他的主要作用就是将目标代码读入进程内存空间中的代码段。
execve()函数详解
execve()
函数的入口是sys_execve()
系统调用,原型如下:(路径:/kernel-4.19/include/linux/syscalls.h)
asmlinkage long sys_execve(const char __user *filename, //需要执行的文件的绝对路径
const char __user *const __user *argv, //传入系统调用的参数
const char __user *const __user *envp); //环境变量
第一个参数是要被执行的程序的路径,第二个参数则向程序传递了命令行参数,第三个参数则向程序传递环境变量[1]。
当进入sys_execve()
系统调用时,在中断处理程序中调用了do_