• 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;
    }

  • 相关阅读:
    myEclipse,web项目连接数据库
    jquery模拟手机短信发送
    myEclipse创建web项目及运行
    总结SUMMARY
    pthread
    NSThread线程对象
    刀哥多线程自动释放池autoreleasepool
    仿SDWebImage
    多线程基本概论multithread
    多线程异步加载图片async_pictures
  • 原文地址:https://www.cnblogs.com/rohens-hbg/p/13029793.html
Copyright © 2020-2023  润新知