Linux内核启动应用程序分析(一)
来源:互联网 发布:如何用淘宝买东西 编辑:程序博客网 时间:2024/04/29 23:53
前面我们分析了Linux内核的启动流程,请参考:
http://blog.csdn.net/stephen_lu_fahai/article/details/70162011
http://blog.csdn.net/stephen_lu_fahai/article/details/70305405
通过分析Linux内核的启动流程,我们知道Linux内核首先挂接到根文件系统下,接着用init_post这个函数启动应用程序。
一、打开一个文件
756行,首先打开/dev/console,随后两行 759和760的两个sys_dup表示赋值,都是指向console,这几行代表的意思是,标准输入printf ()、标准输出scanf()、标准错误err()都是从console这个文件中打印出来。
二、通过run_init_process来启动应用程序
774行,如果有命令行输入的话,就执行命令行,如果没有输入的命令行,就执行run_init_process("/sbin/init");如果run_init_process("/sbin/init")执行失败,就接着往下执行。一般来说,这几个run_init_process都是一直循环,不返回的,除非是执行出现错误(可能是找不到对应的文件)。
那么输入的命令怎么来的?我们通过搜索execute_command,找到这个结果:
这是u-boot传入的参数,形式为init=user_command. 具体的user_command是由用户输入,即execute_command=user_command,所以才有了第一个run_init_process判断是由有用户命令传入。
三、总结:
1、打开/dev/console这个文件,这个文件代表着标准输入、标准输出、标准错误。
2、先判断是否有用户的执行命令传入,若是有,就一直循环执行,若是没有,接着往下执行。
注意:run_init_process是个死循环,执行成功后不会返回,只有当执行失败的时候(可能是找不到要执行的文件),才会往下执行其他的run_init_process。
- Linux内核启动应用程序分析(一)
- Linux内核启动应用程序分析(二)
- Linux内核启动应用程序分析(三)
- Linux内核启动分析(一)
- Linux内核启动分析一
- Linux 2.6.28 – 内核启动分析(一)
- linux内核启动过程分析(一) arm
- Linux内核启动流程分析(一)
- linux内核init启动过程分析(一)
- Linux内核启动流程分析(一)
- ARM-Linux内核移植之(一)——内核启动流程分析 .
- ARM-Linux内核移植之(一)——内核启动流程分析
- 分析linux内核(一)
- Linux内核分析(一)
- Linux内核分析(一)
- Linux内核分析(一)
- Linux内核分析(一)
- Linux 内核启动分析
- MDK5.14仿真STM32F303时无法查看外设寄存器的问题
- 网站收藏
- 使用CGLIB代理对象的创建
- 染色
- Uva227-Puzzle
- Linux内核启动应用程序分析(一)
- Django学习3-模板中使用变量
- python自然语言处理
- 获取用户允许发送通知的代码
- angular创建自定义的指令
- Python针对特定服务定制的代理工具V2.1-------(简述与2.0的区别之处)
- U-boot目录简介
- 编写测试用例及一个例子
- 集合框架-List集合-3