可执行文件的运行过程——从输入命令到文件运行之间发生了什么

当在命令行输入可执行文件命令时,会经历一系列过程:父shell进程创建子进程,子进程通过execve调用加载器,加载器将程序加载到内存并跳转到入口点,开始执行_start和__libc_start_main。这一过程涉及操作系统和C语言的知识。
摘要由CSDN通过智能技术生成

目录

具体过程

_1......    父shell进程生成一个子进程(它是父进程的一个复制)

_2......    子进程通过调用execve系统调用启动 loader(加载器)

_3......    loader为a.out产生内存映像

_4......    loader 将a.out从磁盘复制到内存

_5......    loader 跳转到程序入口点

_6......    _start 函数调用系统启动函数__libc_start_main

_7......    __libc_start_main的执行

说明

加载

内存映像


我们写了一个C程序a.c,输入命令:

gcc a.c

生成了一个可执行目标文件a.out。接下来我们在命令行输入:

./a.out

之后发生了什么呢?

具体过程

_1......    父shell进程生成一个子进程(它是父进程的一个复制)

_2......    子进程通过调用execve系统调用启动 loader(加载器)

_3......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值