日期:2014-05-16  浏览次数:20736 次

linux进程管理(4)---进程执行

一、目的

    本文将讲述进程如何加载并执行一个二进制文件。

    进程被创建完成后,如果需要执行自己的程序,需要做两件事情:从文件系统中读取二进制文件;识别该二进制文件的格式并加载到进程内存地址空间。

    为什么需要识别二进制文件的格式呢?因为linux支持的二进制文件格式不止一种,例如:ELFBASH等。不同的二进制文件格式,需要调用不同的解析程序识别并加载该二进制文件到内存中。

    sys_execve()负责二进制文件的读取、识别和加载;sys_execve()的实现可以在fs/exec.c文件中找到。


二、读取二进制文件

    定义structlinux_binprm结构体,记录二进制文件的重要信息:二进制头128字节、文件名、进程名、环境变量个数、命令行参数个数等。

    sys_execve()->do_execve()->do_execve_common()负责加载二进制文件:

1、调用unshare_files()为进程复制一份文件表;


2、调用