美文网首页
APUE 13 守护进程

APUE 13 守护进程

作者: rasishou | 来源:发表于2019-03-02 11:55 被阅读0次

        很多进程是从系统启动就开始运行,一直运行到系统关闭。对于有这种特殊需求的进程,就给它取了个名字,叫守护进程。由于守护进行是一直运行的,为了防止它中途受到干扰,就把它的控制终端去掉了。但把控制终端去掉之后,守护进程要输出东西怎么办?只能把要输出的内容写到文件里了。但是守护进程A在B目录下的文件C写,守护进程D在E目录下F文件写,系统那么多守护进程,要查找某个守护进程的输出记录就很麻烦。于是用syslog将它们统一起来。

        有些进程只允许它的一个实例运行。举个例子说,如果一个系统里有两个进程调度器,调度器A调度进程C运行,调度器B调度进程D运行,就乱套了。创建单实例进程的方法是,创建一个文件和写锁。那么当一个实例运行后,另一个实例要运行的时候,创建写锁就会失败。

        守护进程通常由系统启动。守护进程如果有配置文件的话,通常只在这个守护进程启动的时候读这个文件。这就是为什么一般设置完配置文件之后,要restart一下守护进程。

        服务器进程中通常调用fork()然后exec()向客户端提供服务。但是服务器进程可能打开了很多文件描述符,而子程序可能用不到这些文件描述符,所以可以在服务器进程中将这些子程序不需要的文件描述符设置为FD_CLOEXE。

问题:为什么创建守护进程需要两个fork()?

        由于守护进程需要分离控制终端,所以需要setsid()。由于setsid()创建新会话并且使非进程组组长进程成为领头进程,所以需要一个非进程组组长进程,于是需要第一个fork().假设产生一个子进程A。它是会话的首进程。由于没有与控制终端连接的会话首进程打开终端设备时,如果这个终端设备不是其他会话的控制终端,该终端设备将自动成为这个会话的控制终端。为了防止这种情况出现,需要将子进程A变为会话的非首进程,于是需要第二个fork()。fork()子进程继承父进程的进程组id,会话id。

相关文章

  • APUE 13 守护进程

    很多进程是从系统启动就开始运行,一直运行到系统关闭。对于有这种特殊需求的进程,就给它取了个名字,叫守护进程。由...

  • APUE第13章 守护进程Deameon

    守护进程 守护进程daemon是一种生存周期很长的进程。它们通常在系统引导时启动,在系统关闭时终止。守护进程是没有...

  • APUE读书笔记-13守护进程(1)

    1、简介 守护进程一般是运行时间特别长的进程,它们一般在系统启动的时候运行,在系统关闭的时候终止。因为它们都没有控...

  • APUE读书笔记-13守护进程(2)

    3、一些编码规范 写一个守护进程,有一些基本的编码规则,可以避免一些由于交互产生的问题。我们先说一下这些规则,然后...

  • APUE读书笔记-13守护进程(3)

    4、登陆错误 守护进程的一个问题就是如何处理错误消息。不能将消息简单地写入到标准错误输出中,因为守护进程并没有控制...

  • APUE读书笔记-13守护进程(6)

    7、客户服务模型 守护进程常常被作为一个服务进程来使用。就像前面那样,我们使用syslogd进程作为服务进程,用户...

  • APUE读书笔记-13守护进程(5)

    6、守护进程遵循的一些标准 Unix上面的守护进程,一般会遵循如下的通用标准: 如果守护进程使用锁文件,那么锁文件...

  • rsync服务企业应用

    守护进程服务企业应用: 守护进程多模块功能配置 守护进程的排除功能实践 守护进程来创建备份目录 守护进程的访问控制...

  • Python多进程

    守护进程 守护进程其实就是“子进程“是否伴随主进程一起结束:守护==>伴随,即守护进程会伴随主进程的代码运行完毕后...

  • APUE 进程环境

    本文使用golang的syscall,os,golang.org/x/sys/unix包 1.main函数 mai...

网友评论

      本文标题:APUE 13 守护进程

      本文链接:https://www.haomeiwen.com/subject/neosuqtx.html