zoukankan      html  css  js  c++  java
  • 守护进程写日志

     tail -f filename 查看日志会把文件里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include <unistd.h>
    #include <string.h>
    #include <strings.h>
    #include <errno.h>
    
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <fcntl.h>
    #include <time.h>
    
    void sysErr(const char* err,int status)
    {
        perror(err);
        exit(status);
    }
    
    void deamonize()
    {
        pid_t pid;
        pid = fork();
        if (pid > 0)
        {
            exit(0);
        }
        else if (pid < 0)
        {
            sysErr("fork",-1);
        }
    
        setsid();// 子进程创建会话,独立出来,脱离控制
    
        // 改变工作路径、
    //    if (chdir("/") != 0)
    //    {
    //        sysErr("chdir",errno);
    //    }
    
        // 重设文件掩码
        umask(0);
    
        close(0);
        open("/dev/null",O_RDWR);
        dup2(1,0);
        dup2(2,0);
    }
    
    void writeLog(const char* buf)
    {
        int fdLog;
        fdLog = open("./deamon.log",O_RDWR | O_APPEND | O_CREAT,0644);
        if (fdLog < 0)
        {
            sysErr("open log file failed.",errno);
        }
        // 时间
        char bufTime[64] = {0};
        time_t now_t;
        time(&now_t);
        struct tm ptimeT = {0};
               localtime_r(&now_t,&ptimeT); 
        sprintf(bufTime,"%04d-%02d-%02d-%02d-%02d-%02d:",ptimeT.tm_year+1900,ptimeT.tm_mon+1,ptimeT.tm_mday,
                ptimeT.tm_hour,ptimeT.tm_min,ptimeT.tm_sec);
        write(fdLog,bufTime,strlen(bufTime));
        write(fdLog,buf,strlen(buf));
        close(fdLog);
    }
    
    int main(int argc, char **argv)
    {
        deamonize();
        // 守护进程核心工作
        while(1)
        {
            writeLog("hello
    ");
            sleep(2);
        }
        return 0;
    }
  • 相关阅读:
    上传文件事件并校验:event.target.files && event.target.files[0]
    深浅拷贝
    Git学习
    Flex弹性布局
    hive
    222
    错误总结
    Redis小结2
    spark小结
    kafka详解
  • 原文地址:https://www.cnblogs.com/xiangtingshen/p/11962046.html
Copyright © 2011-2022 走看看