ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

守护进程:每秒生成一个日志文件

2022-01-20 13:35:39  阅读:215  来源: 互联网

标签:name 02d% tm file close 日志 include 每秒 守护


#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#define SIZE  32
void get_time(char file_name[SIZE])
{
    time_t t = time(NULL);
    struct tm *tm = localtime(&t);
    sprintf(file_name, "%d%02d%02d%02d%02d%02d", tm->tm_year+1900, (tm->tm_mon)+1, 
                tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);
}
void task() {
    //建立日志目录
    const char *path = "/home/a/workspace/daemon_test/log";
    if(-1 == access(path, F_OK)) mkdir(path, 0775);
    chdir(path);

    //每1秒在目录中生成一个文件
    while(1) 
    {
        sleep(1);
        char file_name[SIZE] = "";
        get_time(file_name);
        int fd = open(file_name, O_RDONLY | O_CREAT, 0664);
        close(fd);
    }
}
int main() {
    //父进程直接退出
    if(fork() > 0) exit(0);
    //子进程建立新会话
    if(-1 == setsid())
    {
        perror("setsid");
        exit(1);
    }
    //设置根目录为当前目录
    chdir("/");
    //设置umask
    umask(0);
    //关闭标准输入输出
    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);
    //核心任务
    task();
    return 0;
}

标签:name,02d%,tm,file,close,日志,include,每秒,守护
来源: https://www.cnblogs.com/rookiezjz/p/15825974.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有