码迷,mamicode.com
首页 > 系统相关 > 详细

进程的守护进程的用法

时间:2016-06-19 08:58:34      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:

编写守护进程的步骤:

1、创建子进程,父进程退出。

  技术分享

 

2、在子进程中创建新会话。

   setsid();

  技术分享

 

3、改变当前目录为根目录。

  chdir("/");

4、重设文件权限掩码。

  umask(0);

5、关闭文件描述符。    

 for(i = 0; i < getdtablesize(); i++) /* 第五步 */
 {
     close(i);
 }

 

代码分析;

/* daemon.c创建守护进程实例 */
#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()
{
    pid_t pid;
    int i, fd;
    char* buf = "This is a Daemon\n";

    pid = fork();    /* 第一步 */
    if(pid < 0)
    {
        printf("Error fork\n");
        exit(1);
    }
    else 
        if(pid > 0)
       {
           exit(0);    /* 父进程退出 */
       }

    setsid();    /* 第二步 */
    chdir("/");    /* 第三步 */
    umask(0);    /* 第四步 */
    for(i = 0; i < getdtablesize(); i++)    /* 第五步 */
    {
        close(i);
    }

    /* 这时创建完守护进程,以下开始正式进入守护进程工作 */
    while(1)
    {
        if((fd = open("/tmp/daemon.log", O_CREAT | O_WRONLY | O_APPEND, 0600)) < 0)
        {
            printf("Open file error\n");
            exit(1);
        }
        write(fd, buf, strlen(buf) + 1);
        close(fd);
        sleep(10);
    }
    return 0;
}

 

进程的守护进程的用法

标签:

原文地址:http://www.cnblogs.com/yihujiu/p/5597419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!