守护进程
Daemon(进程),是Linux中的后台服务器进程,通常独立于控制终端,并且周期性的执行某种任务或者等待处理。某些发生的事件,一般采用d结尾的名字。
Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着,他们就是守护进程。
创建守护进程
- 创建子进程,父进程退出。
使得所有工作在子进程中的任务脱离终端。 - 在子进程中创建新session
- setsid()函数
- 使得子进程完全独立出来,脱离父进程的权限控制
- 改变当前目录为根目录
- chdir()函数
- 这是为了防止占用可卸载的文件系统
- 重新设置文件掩码
- umask()函数
- 防止继承的文件创建屏蔽字来拒绝某些权限
- 关闭文件描述符
- 关闭:STDOUT_FILENO、STDIN_FILENO、STDERR_FILENO。
- dup2()函数,重定向到dev/null
- 守护进程的任务。
完成前面的准备工作,这里开始实现任务。 - 守护进程退出
可使用信号机制。