分析exec*函数对应的系统调用处理过程

本文详细分析了Linux系统调用execve如何装载和启动可执行程序,探讨了execve函数的执行过程,从打开文件、填充bprm结构、加载二进制文件到设置寄存器启动新程序。在execve调用后,原进程的代码段、数据段被新内容取代,仅进程ID等信息保持不变。
摘要由CSDN通过智能技术生成

刘森林 原创作品转载请注明出处
《Linux内核分析》MOOC课程)
分析linux系统如何装载和启动一个可执行程序,也就是分析一个重要的系统调用execve

execve函数原型:

#include <unistd.h>
int execve (const char* path,char* const argv[],char* const envp[]);

参数说明:path 表示启动程序所在的路径名;argv 表示启动程序所带的参数;envp 表示启动程序所需要的环境变量参数

所要启动的可执行程序m.o的代码,该段代码输出字符串“Output something”:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    printf("Output something\n");
    return 0;
}

执行execve的代码:

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char* argv = {
  0,0};
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值