标签:
王昭(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
Linux内核如何装载和启动一个可执行程序
总结部分:Linux内核装载时首先对相应的可执行程序分配好资源,进行装配过程,完成执行上下文环境设置,变量赋值等操作,然后返回到用户态的主程序,对环境进行修改。在用户态执行的新可执行程序,用户态程序为其分配寄存器,调度资源执行其代码段程序。启动一个可执行程序后,接着利用内核态为其准备的上下文执行环境,执行它的程序。
exec系统调用有多种不同的使用格式,不同之处在于有不同的名字和参数。
exec调用在程序中使子进程能执行自己的代码。 main() {
printf(“==system execl testing ==\n”); execl(“/bin/date”,“/bin/date”,0); printf(“execl failure!\n”); }
其中一个执行结果如下:
如果将execl所在行写成execl(“date”,”date”,0),则会有如下的执行结果: ===system execl testing=== execl failure!
程序的第一、第三行输出了判断信息,当execl调用成功时,因不执行程序中的语句,使第三行语句无法输出,该信息只当execl调用失败时才能输出。因此执行该程序获得上述两个不同的结果。
第二次execl调用失败的原因是execl调用的第一个参数必须是目标文件的完整路径名,而不能只用文件名。
标签:
原文地址:http://www.cnblogs.com/yktlll/p/5375357.html