Linux系统编程-守护进程

来源:互联网 发布:vc编程入门 编辑:程序博客网 时间:2024/05/24 22:46

守护进程:是指在LINUX或其他多任务操作系统中在后台执行的电脑程序,说了守护进程不得不提到精灵进程。
精灵进程(d a e m o n):是生存期长的一种进程。它们常常在系统引导装入时起动,在系统关闭时终止。因为它们没有控制终端,所以说它们是在后台运行的。
守护进程可以使程序在后台不断地运行,但是以下程序不能在终端上面打印以及输出,可能要做一些复杂的操作才可以,譬如写入文件中,然后在文件中打开,如果嫌弃麻烦可以设定使用定时程序进行定时的清理。

// 头文件的读写可以在终端上面通过指令man XXX完成,想要哪个函数的头文件就man哪个函数#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>int daemonize(){    // 创建子进程,关闭父进程    pid_t pid = fork();    if(pid > 0)    {        exit(0);    }    else if(pid < 0)    {        return 0;    }    // 设置文件掩码,新创建文件的默认权限    umask(0);    // 设置启动新的会话,将当前进程设置为新的会话    pid_t sid = setsid();    if(sid < 0)    {        return 0;    }    // 改变当前目录的工作目录    if(chdir("/") < 0)    {        return 0;    }    // 关闭不使用的文件描述符    close(0);   // 标准输入    close(1);   // 标准输出    close(2);   // 标准出错    // 重定向,标准输入,标准输出以及标准出错!将其使用open函数至目录/dev下    open("/dev/null",O_RDONLY);    open("/dev/null",O_RDWR);    open("/dev/null",O_RDWR);    return 1;}int main(){    daemonize();  // 调用函数    while(1);     // 定义死循环,使其在后台不断地刷新运行    return 0;}