守护进程创建过程

守护进程创建详解:核心步骤与关键技术
本文详细解析了创建守护进程的关键步骤,并深入探讨了各步骤背后的原理和技术细节,包括屏蔽控制终端操作信号、后台运行、脱离控制终端、禁止重新打开控制终端等核心要素。同时,提供了实现代码示例,帮助开发者理解和实践守护进程的高效创建。

(1)屏蔽一些有关控制终端操作的信号。这是为了防止在守护进程没有正常没有正常运行起来前,控制终端受到干扰退出或挂起。实现代码如下:

          signal(SIGTTOU,SIG_IGN);

          signal(SIGTTOU,SIG_IGN);

          signal(SIGTSTP,SIG_IGN);

           signal(SIGHUP,SIG_IGN);

(2)在后台运行。这是为了避免挂起控制终端将其放入后台执行。方法是在进程中调用fork使父进程终止,让其子进程在后台执行。实现代码如下:

           if(pid=fork())

                   exit(0);

(3)脱离控制终端和进程组。因为进程属于一个进程组,进程组号(PGID)就是进程组长的进程号(PID)。同时进程组中的进程共享一个控制终端,这个控制终端通常就是创建进程的shell登录终端。而控制终端和进程组通常是从父进程继承下来的。需要摆脱他们,使之不受他们的影响。因此需要调用setid()使子进程成为新的会话组长,实现代码如下:

              setid();

(4)禁止进程重新打开一个控制终端。

             if(pid=fork())

                        exit(0);


(5)关闭打开的文本件描述符。

            for(i=0;i<NOFILE;i++)

                       close(i);

(6)改变当前工作目录。

             chdir(“/”);

(7)重设文件创建掩模。

                 umask(0);

(8)处理SIGCHLD信号(子进程退出信号)。防止在子进程结束时产生僵尸进程。

              signal(SIGCHLD,SIG_IGN);

经过8个步骤一个守护进程就创建好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值