daemon


linux下常见的服务名带d结尾的:inetd、httpd、等都是守护进程,d字符表示daemon。
普通进程的控制端依赖:
每一个从某终端开始的进程都会依赖这个终端,也就是这个进程的控制端。当控制端被关闭时候进程一般也会被关闭。
daemon进程编写步骤:
    1:创建一个子进程,同事关闭父进程。该子进程就会变成init进程的子进程。
    2:调用setsid创建一个新会话并成为新会话组长。(保证本身不是进程组组长--子进程一定不会是组长)
        让进程摆脱原会话、原进程组、以及原终端控制;让进程独立起来,脱离所有其他进程。
    3:把当前工作目录切换到根目录:chdir
    4:设置文件掩码为0 (umask):子进程都会从父进程那里继承文件掩码,当创建文件时,默认使用的是继承的文件
         掩码;所以对于daemon来说根本不知道它的文件掩码是什么,为避免麻烦(权限问题)我们应该重置文件掩码。
         一般为0(不屏蔽用户任何操作)
    5:在写daemon一般会对终止进程或者对配置文件的改动进行相应的操作:或完成任务释放资源,或重新加载配置项

你可能感兴趣的:(APUE)