守护进程的基本概念

1.什么是守护进程?


        守护进程运行在后台,不跟任何控制终端关联。


2.怎么创建一个守护进程?


        有俩个基本要求: 1.必须作为我们init进程的子进程 2.不跟控制终端交互。

        1.使用fork函数创建一个新的进程,然后让父进程使用exit函数直接退出(必须要的)

        2.调用setsid函数。(必须要的)

        3.调用chdir函数,将当前的工作目录改成根目录,增强程序的健壮性。(不是必须要的)

        4.重设我们umask文件掩码,增强程序的健壮性和灵活性(不是必须要的)

        5.关闭文件描述符,节省资源(不是必须要的)

        6.执行我们需要执行的代码(必须要的)

3.守护进程简单例程

        #include <stdio.h>
        #include <unistd.h>
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <stdlib.h>

        int main(void)
        {
                pid_t pid;
                pid = fork();

         //父进程直接退出

                if(pid > 0 ){
                        exit(0);
                }

        //子进程中创建守护进程

                if(pid == 0){
                        setsid();

                        chdir("/");

                        umask(0);

                        close(0);
                        close(1);
                        close(2);

        //守护进程的程序,此处用while(1)作为临时程序

                        while(1){

                        }
                }

                return 0;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值