守护进程设计的编程实例

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
 
 
int main()
{
    pid_t pid;
    int i;
    char *buf = "I am a daemon!\n";
    int flag = 1;
    int fd;
 
 
    /* 1.创建子进程 */
    pid= fork();
 
 
    if(pid < 0)
    {
        printf("fork error!\n");
        exit(0);
    }
    else if (pid > 0)
        exit(0);
 
 
    /* 2.脱离控制终端 */
    setsid();
 
 
    /* 3.1 改变工作目录 */
    chdir("/");
 
 
    /* 3.2清除掩码 */
    umask(0);
 
 
    /* 3.3关闭打开的文件 */
    for(i=0; i<65535; i++)
        close(i);
 
 
    /* 4.守护进程的实际工作 */
    while(1)
    {
        if((flag == 1) && (fd = open("/tmp/daemon.log",O_CREAT|O_WRONLY|O_APPEND,0600)) < 0)
        {
            printf("open file error\n");
            flag = 0;
            exit(1);
        }
        write(fd, buf, strlen(buf));
        close(fd);
        sleep(1);
    }
 
 
    return 0;
}
 
 
 
 
温馨提醒:上述的程序代码中的注释步骤就是守护进程的设计步骤,若有需要只用自己改掉第4步
下面的代码。
 

猜你喜欢

转载自blog.csdn.net/perfect1t/article/details/78117704