void init(void) 分析 ! \linux-1.0\init\main.c
void init(void)
{int pid,i;//设置环境信息setup((void *) &drive_info);//打印提示语句sprintf(term, "TERM=con%dx%d", ORIG_VIDEO_COLS, ORIG_VIDEO_LINES);//打开终端1(void) open("/dev/tty1",O_RDWR,0);//拷贝打开的描述字1 ,2;(void) dup(0);(void) dup(0);//运行初始化函数execve("/etc/init",argv_init,envp_init);execve("/bin/init",argv_init,envp_init);execve("/sbin/init",argv_init,envp_init);/* if this fails, fall through to original stuff *///启动子程序if (!(pid=fork())) {//子程序操作//关闭父进程打开的0描述字close(0);//打开自己的运行模式描述字 if (open("/etc/rc",O_RDONLY,0))_exit(1);//再执行shell命令。execve("/bin/sh",argv_rc,envp_rc);_exit(2);}//父进程往下运行。if (pid>0)// 等待子程序退出while (pid != wait(&i))/* nothing */;//子程序退出后,父进程做补充操作while (1) {//再循环启动子进程if ((pid = fork()) < 0) {printf("Fork failed in init\n\r");continue;}if (!pid) {//进入子进程操作//关闭 父进程的3个描述字close(0);close(1);close(2);//分开父进程和子进程会话setsid();//子进行拷贝终端描述字(void) open("/dev/tty1",O_RDWR,0);(void) dup(0);(void) dup(0);//子进程运行shell_exit(execve("/bin/sh",argv,envp));}while (1)//如果为父进程等待子进程完成后退出当前循环if (pid == wait(&i))break;//打印子进程结束信息。printf("\n\rchild %d died with code %04x\n\r",pid,i);//数据同步,把缓存区的数据写到磁盘sync();}//父进程结束_exit(0);
}
void init(void) 分析 ! \linux-1.0\init\main.c相关推荐
- void start_kernel(void)分析 ! \linux-1.0\init\main.c
//启动系统内核 //asmlinkage 为通过堆栈传递参数,默认为通过寄存器传递参数. asmlinkage void start_kernel(void) { /** Interrupts ar ...
- linux init进程原理,Linux 系统下 init 进程的前世今生
原标题:Linux 系统下 init 进程的前世今生 Linux系统中的 init 进程 (pid=1) 是除了 idle 进程 (pid=0,也就是 init_task) 之外另一个比较特殊的进程, ...
- linux init.d 密码,Linux基础之init.d、rc.local
linux系统操作中另两个经常遇到的文件夹-init.d与rc.local,先来说init.d: 在redhat中init.d的位置在/etc/rc.d/init.d,如果说init.d的作用就必须提 ...
- Android 8.1 源码_启动篇(一) -- 深入研究 init(转 Android 9.0 分析)
前言 init进程,它是一个由内核启动的用户级进程,当Linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,确切的说,它是Linux系统中用户控件的第一个进程,所以它的进程号是1 ...
- Android7.0 init进程源码分析
目的 看过一些blog和相关的书籍,大多数文章在介绍init进程时,参考的代码比较久远,同时不同文章行文的重点不太一样,因此决定自己试着来分析一下,并作相应的记录. 背景 当linux内核启动之后,运 ...
- init/main.c中的void init(void)
init进程调用的init函数 1.setup((void*)&drive_info); a.setup函数用的是main.c中Line 25的inline _syscall1(int,set ...
- Linux 启动流程即init程序分析--2
3.upstart介绍 upstart是一个基于事件的init的替代程序,这意味着服务的启动和停止都基于事件的通信. upstart 正在由 Scott James Remnant 进行开发, ...
- Linux init程序分析
http://blog.csdn.net/zhoudaxia/article/details/6666872 1.init程序剖析 init进程是内核引导过程完成时创建的第一个进程.Linux ...
- 3. Linux系统启动分析-从start_kernel到init进程的启动
##################################### 作者:张卓 原创作品转载请注明出处:<Linux操作系统分析>MOOC课程 http://www.xuetang ...
最新文章
- 利用RNN训练Seq2Seq已经成为过去,CNN才是未来?
- centos7安装vsftpd
- Go版本升级后编译出错:Load redeclared in this block
- Anisotropic gauss filter
- 豆瓣评分9.4!这部大片你不应该错过,每一秒都是不敢看的残忍!
- TMS320F28335——IO控制/定时计操作
- CodeForces - 766C - Mahmoud and a Message dp
- e - 数据结构实验之查找五:平方之哈希表_leetcode算法之哈希表
- Springboot2.0访问Redis集群
- win10默认壁纸_Win10瞬间审美爆炸,5分钟一键美化,不输万元Mac!
- VBS教程(入门级)
- 小微风控之财务评分模型的制定与应用
- win10关闭自动屏保
- Ubuntu 数字小键盘不能用解决方法
- 通信教程 | 波特率、比特率、通信速度的区别
- 十余款新品惊艳亮相,华为春季旗舰新品发布会看点满满
- Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'user' 附近有语法错误
- 2020交通改善与交通安全专辑
- python读取usb数据_PyUSB:从USB设备读取
- 谷歌翻译用不了修复方法记录