守护进程的概念
守护进程也被称为精灵进程。它具有如下特点:
(1)它是运行在后台的一种特殊进程。
(2)它独立于控制终端,所以不能与用户进行直接交互。
(3)它周期性的执行某种任务或等待处理某些发生的事件。
(4)它不受用户登录注销的影响,一直在运行着。其它进程都是在用户登录或程序运行后才创建。
基于以上的这些特点,守护进程有如下用途:
(1)Linux中的大多数服务器都是通过守护进程来实现的。如ssh服务器用于远程连接,ftp服务器。
(2)守护进程可以完成很多系统任务,如作业规划进程crond用于设置定时任务等。
可以通过ps axj命令查看系统中的守护进程。守护进程通常是以d结尾的名字,表示Daemon。
创建守护进程
创建步骤如下:
1. 首先,守护进程运行在后台。而我们编写的程序在运行起来会在前台执行,所以,在程序中要用fork创建一个子进程,创建成功后,父进程退出,则子进程就被提到后台继续运行了。(这里也可以是程序直接加&以运行在后台,不过fork的目的主要是为了第二步)。
2. 要使进程转化为守护进程,最重要的一步是要使该进程脱离原来的控制终端。此时,需要调用如下函数:
#include<unistd.h>
pid_t setsid(void);