|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
引言:
在嵌入式Linux系统中,因为经常会碰到要让一些应用(进程)在启动的时候就执行,并且永远执行到系统结束为止的问题,所以,对一个合格的嵌入式Linux工程师而言,必须学会守护进程的编写。
由来:
在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会被自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭才会退出。如果想让某个进程不因为用户或终端或其他的变化而受到影响,就必须把这个进程变成一个守护进程。
编写步骤:
–创建子进程,父进程退出
–在子进程中创建新会话
–改变当前目录为根目录
–重设文件权限掩码
–关闭文件描述符
原理分析:
由于守护进程是脱离控制终端的,因此,完成第一步后就会在Shell终端里造成一程序已经运行完毕的假象。之后的所有后续工作都在子进程中完成,而用户在Shell终端里则可以执行其他的命令,从而在形式上做到了与控制终端的脱离
由于父进程已经先于子进程退出,会造成子进程没有父进程,从而变成一个孤儿进程。在Linux中,每当系统发现一个孤儿进程,就会自动由1号进程(也就是init进程)收养它,这样,原先的子进程就会变成init进程的子进程了/*父进程退出*/
pid=fork();
 if(pid>0){
 exit(0);
}
[ 本帖最后由 caohejing 于 2007-8-8 12:11 编辑 ] |
|