zoukankan      html  css  js  c++  java
  • 进程的守护进程的用法

    编写守护进程的步骤:

    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
    ";
    
        pid = fork();    /* 第一步 */
        if(pid < 0)
        {
            printf("Error fork
    ");
            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
    ");
                exit(1);
            }
            write(fd, buf, strlen(buf) + 1);
            close(fd);
            sleep(10);
        }
        return 0;
    }
  • 相关阅读:
    java关键字-static
    java内部类
    绘制椭圆
    画出一个三角形
    创建和使用画刷
    画刷使用
    绘制矩形
    在getview方法中有三个参数,起到优化的部分为ViewHolder的使用,主要方法setTag(),getTag()
    SecondContract 接口类
    SecondModel 实现类
  • 原文地址:https://www.cnblogs.com/yihujiu/p/5597419.html
Copyright © 2011-2022 走看看