守护进程是什么?怎么实现?
守护进程(Daemon)是运⾏在后台的⼀种特殊进程。它独⽴于控制终端并且周期性地执⾏某种任务或等待处理某些发⽣的事件。守护进程是⼀种很有⽤的进程。
守护进程特点
守护进程最重要的特性是后台运⾏。
守护进程必须与其运⾏前的环境隔离开来。这些环境包括未关闭的⽂件描述符,控制终端,会话和进程组,⼯作⽬录以及⽂件创建掩模等。这些环境通常是守护进程从执⾏它的⽗进程(特别是shell)中继承下来的。
守护进程的启动⽅式有其特殊之处。它可以在Linux系统启动时从启动脚本/etc/rc.d中启动,可以由作业规划进程crond启动,还可以由⽤户终端(shell)执⾏。
实现
在⽗进程中执⾏fork并exit推出;
在⼦进程中调⽤setsid函数创建新的会话;
在⼦进程中调⽤chdir函数,让根⽬录 ”/” 成为⼦进程的⼯作⽬录;
在⼦进程中调⽤umask函数,设置进程的umask为0;
在⼦进程中关闭任何不需要的⽂件描述符
Last updated