ⅰ守护进程
守护进程也叫“精灵进程”,是运行在后台的一种特殊程进程。它独立与控制终端并且周期性的执行某种任务或者等待处理某些发生的事件。Linux大多数服务器都是用守护进程实现的。
ⅱ守护进程的特点
Linux系统启动时会启动很多服务进程,这些服务进程没有控制终端,不能直接和用户交互。其它进程都是在用户登录或运行程序时创建,然后在运行结束或用户注销时终止,但系统服务进程不受用户登录注销的影响,它们一直运行着。
ⅲ创建守护进程
○pid_t setsid(void);
该函数调用成功时返回新创建的会话id,出错返回1。调用这个函数之前,当前进程不允许时进程组的Leader,方法是先fork然后再调用setsid。调用完之后,创建了一个新的会话,当前进程成为会话Leader;创建了一个新的进程组,当前进程成为该进程组的Leader。
具体过程:1.调用mask将文件模式创建屏蔽字设置为0;2.调用fork,父进程退出(①如果该守护进程作为一条简单的shell命令启动,那么父进程终止使得shell认为该命令已经结束;②保证子进程不是一个进程组的组长进程);3.调用setsid创建一个新会话,setsid会导致:①调用进程成为一个会话的组长进程;②调用进程成为一个进程组的组长进程;③调用进程没有控制终端(再fork一次,保证daemon进程不会打开tty设备);4.当前目录改为根目录;5.关闭不需要的文件描述符;6.忽略SIGCHLD信号(自动会忽略)。
ⅳ关于fork的问题
○在上面创建守护进程的代码中fork了两次,为什么?