• linux 后台进程


    守护进程

    1 定义
    守护进程是脱离于终端并且在后台运行的进程.
    2 创建守护进程步骤
    1)创建子进程,父进程退出.
    2)在子进程中创建新会话.(最重要的一步,使用系统函数setsid)
    3)改变当前目录为根目录
    4)重设文件权限掩码
    5)关闭文件描述符


    调用setsid有三个作用:
    1)让进程摆脱原会话的控制
    2)让进程摆脱原进程组的控制
    3)让进程摆脱原控制终端的控制

    示例程序如下:

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

    #define MAXFILE 65535

    int main()
    {
        pid_t pc;
        int i, fd, len;
        char *buf = "this is a Daemon ";
        len = strlen(buf);
        pc = fork(); // first
        if(pc < 0)
        {
            printf("error fork ");
            exit(1);
        }
        else if(pc > 0)
        {
            exit(0);
        }
        
        setsid(); // second
        chdir("/"); // third
        umask(0); // fourth
        
        for(i=0; i<MAXFILE; i++) // five
            close(i);
        
        while(1)
        {
            if((fd = open("/tmp/daemon.log", O_CREAT | O_WRONLY | O_APPEND, 0600)) < 0)
            {
                perror("open");
                exit(1);
            }
            write(fd, buf, len+1);
            close(fd);
            sleep(10);
        }
        return 0;
    }

  • 相关阅读:
    控制流测试与条件测试
    12306的“短信公众号”到底是个啥?
    ISTQB名词辨析
    ISTQB TA
    启动Chrome时自动开启开发者模式
    LoadRunner Community Edition 12.60 无法获取Community License
    用言的活用声调变化规则
    ISTQB TTA大纲中提到的参考书目
    Java调用方法参数究竟是传值还是传址?
    Java中的Lambda表达式简介及应用
  • 原文地址:https://www.cnblogs.com/rohens-hbg/p/13029793.html
Copyright © 2020-2023  润新知