天下第七

二也是一种生活态度
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C语言创建守护进程代码

Posted on 2011-08-27 22:10  天下第七  阅读(203)  评论(0)    收藏  举报
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>

/*
  * run as deamon service
  * 
*/
void init_deamon(void){
        pid_t pid;

        if((pid = fork()) < 0){
                exit(1);
        }
        else if(pid > 0){
                exit(1);//kill parent process
        }

        setsid();

        if((pid = fork()) > 0){
                exit(0);
        }
        else if(pid < 0){
                exit(1);
        }
        close(0);//clsoe stdin
        close(1);//close stdout
        close(2);//close stderr
        chdir("/tmp");
        umask(0);
        return;
}

int main(void){
        init_deamon();
        FILE *fp;

        //endless looping to keep this process never ended.
        while(1){
                sleep(10);
                if((fp = fopen("/tmp/log.txt","a+")) > 0){
                        fprintf(fp,"hello\n");
                        fclose(fp);
                }

        }
        return EXIT_SUCCESS;
}