linux多进程-守护进程的创建和使用

2024-01-03 03:30:43

Linux实现守护进程创建
linux daemon 进程
Linux中创建守护进程
【Linux操作系统】守护进程的创建和逐步实现代码分析

demo

创建一个守护进程,在time.log日志文件中每隔一秒,记录当前时间。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/stat.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    time_t now_sec;
    struct tm *now_time;

    int i, ret;
    pid_t daemon_pid = -1;

    //创建子进程
    daemon_pid = fork();
    if(daemon_pid < 0){
        perror("Create daemon_pid");
        return -1;
    }

    //判断父子进程
    if(daemon_pid > 0){
        exit(0);//杀死父进程,得到孤儿进程
    }

    setsid();//让子进程脱离原本回话
    chdir("/tmp");//修改当前工作路径,之后打开文件必须给绝对路径,不然会写到/tmp下的time.log中
    umask(0);//重设文件权限掩码

    //删除进程中所有的文件描述符
    for(i = 0; i < getdtablesize(); i++){
        close(i);
    }
    printf("ok\n");
    
    //周期性执行的目标进程
    while(1){
        time(&now_sec);
        now_time = localtime(&now_sec);

        FILE *fp = fopen("/home/time.log", "a+");
        if(NULL == fp){
            perror("fopen");
            exit(-1);
        }

        fprintf(fp, "%d年%d月%d日%d时%d分%d秒\n", now_time->tm_year+1900, now_time->tm_mon+1, now_time->tm_mday, now_time->tm_hour, now_time->tm_min, now_time->tm_sec);

        //fflush(fp);
        fclose(fp);

        sleep(1);
    }

    return 0;
}

在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/TianYanRen111/article/details/135348839
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。