admin 管理员组

文章数量: 887021


2024年1月22日发(作者:纯dos下看u盘盘符)

linux 执行程序流程

在Linux系统中,执行程序的基本流程如下:

1. 用户输入命令:

用户在终端(TTY或shell)中键入一个命令行指令,并按下回车键。这个命令可能是一个内置命令(由Shell直接解析和执行),也可能是一个外部可执行文件的名称。

2. Shell解析命令:

Shell接收到用户的命令后,首先检查它是否为内部命令或别名。如果不是,则认为它是外部命令并开始查找对应的可执行文件。

3. 搜索可执行文件:

Shell通过环境变量`PATH`指定的路径列表来搜索可执行文件。它会按照路径列表中的顺序逐个目录查找与命令同名的可执行文件。

4. 加载程序:

当找到匹配的可执行文件时,Shell将通过操作系统调用加载器(如动态链接器或其他系统特定的加载器)将其加载到内存中。

5. 程序执行:

加载完成后,控制权从Shell传递给该可执行文件。程序开始执行其代码,包括初始化、处理命令行参数以及执行主程序逻辑。

6. 资源分配:

操作系统负责分配必要的系统资源,如内存空间、打开文件描述符等,以便程序正常运行。

7. 程序执行完毕:

程序执行完其任务后,释放所占用的资源并通过退出系统调用通知操作系统其已完成执行。程序返回一个退出状态码给Shell。

8. 结果反馈给用户:

Shell通常会显示程序的输出,并根据程序的退出状态码来判断执行成功与否。

对于编译型语言写的程序,还涉及到预编译、编译、汇编和链接这四个步骤,在这些步骤之后生成了可执行文件,然后才能按照上述流程执行。而对于解释型语言,如Python、Perl等,执行过程则涉及到了解释器读取脚本、解析语句并立即执行的过程。


本文标签: 执行 可执行文件 程序 命令 退出