守护进程的简单解读

一.守护进程解读

1.守护进程

就是系统后台运行的程序,就比如系统写日志的过程。

2.守护进程的创建

守护进程核心一点就是**子进程对setsid();
调用**,取代父进程的会话过程。
剩下的就是设置会话。
     **(1) 改变工作目录确保程序路径上不会出现错误。
      (2)设置文件的掩码。
      (3)关闭打开的文件描述符。
      ..**

3.实际

上在我看来守护进程和僵尸进程的功能上的区别,在于一个干正事,一个不干正事罢了。

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <fcntl.h>  
#include <sys/types.h>  
#include <unistd.h>  
#include <sys/wait.h>  
int main(int argc,char **argv)  
{  
    int i, fd ;  
    char *buf = "xi fu tai kuai\n" ;  
    pid_t pid = fork() ;//第一步,创建子进程  
    if (pid > 0)  
    {  
      exit(0);
    }  
    if(pid==0)  
    {  
      setsid() ;//第二步,创建新会话  
      chdir("/home/lnh") ;//改变当前工作目录为跟目录  
      umask(0) ;//设置文件权限掩码  
    for(i = 0; i < getdtablesize(); ++i)//和close(STDIN_FILEND);等3个(in out err) 效果一致
    {  
        close(i) ;//关闭文件权限描述符  
    }  
    //守护进程每隔10s打日志  
    while(1)  
    {  
        if (fd = open("/home/lnh/logrid.txt", O_CREAT|O_WRONLY|O_APPEND, 0666) < 0)  
        {  
            printf("open file error\n") ;  
            exit(1) ;  
        }  
        write(fd, buf, strlen(buf)+1) ;  
        close(fd) ;  
        sleep(3) ;  
    }  
    exit(0) ;  
    }  

   
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值