Linux中有关执行函数的思维导图,包括fork()、vod binfmt_setup()、filename、argv、envp
树图思维导图提供 执行函数思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 执行函数思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:6fa6d5a6f25276068bc7a36624cca0cb
执行函数思维导图思维导图模板大纲
在执行 fork()之后,同一进程有两个拷贝都在运行
子进程具有与父进程相同的可执行程序和数据(简称映像)
父进程就要调用 execve()装入并执行子进程自己的映像
execve()函数必须定位可执行文件的映像,然后装入并运行它
装入的并不是实际二进制映像的完全拷贝,拷贝的完全装入是用请页装入机制(Demand Pageing Loading)逐步完成的
在使用这种数据结构前必须调用 vod binfmt_setup()函数进行初始化
这个函数分别初始化了一些可执行的文件格式
init_elf_binfmt()
init_aout_binfmt()
init_java_binfmt()
init_script_binfmt()
初始化就是用 register_binfmt(struct linux_binfmt * fmt)函数把文件格式注册到系统中
将给定可执行程序的文件找到并打开,这是由 open_exec()函数完成的
open_exec()返回一个 file 结构指针,代表着所读入的可执行文件的映像
函数 count()对字符串数组 argv[]中参数的个数进行计数
如果 count()小于 0,说明统计失败,则调用 fput()把该可执行文件写回磁盘
就调用 copy_strings 把参数以及执行的环境从用户空间拷贝到内核空间的 bprm变量中
调用 copy_strings_kernel()从内核空间中拷贝文件名
get_name()已经把文件名拷贝到内核空间