prepare执行完释放_第五十三期-进程的执行

本文详细介绍了Linux系统调用execve()的作用和执行流程,该调用用于替换进程的内存映像,使进程执行新的代码。从参数赋值、文件查找、内存空间初始化到权限检查,逐步解析了execve()内部的关键步骤,为进程执行新程序做好准备。
摘要由CSDN通过智能技术生成

5b466c5b677f95b54e509910e8fe7b5d.png

作者:熊轶翔@熊仙僧,中国科学院软件研究所智能软件研究中心

在上一章我们学习了进程的创建过程,但是新进程在被创建之后还如果要运行新的代码,这个时候就轮到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_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>