守护进程的创建

/*===============================================
*   文件名称:daemon.c
*   创 建 者:mf  
*   创建日期:2023年04月17日
*   描    述:守护进程 
================================================*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include <unistd.h>
#include <stdlib.h>

int Create_Process(void)
{
    /*1.创建子进程,父进程退出*/
    pid_t pid=fork();
    if(pid<0)
    {
        perror("fork");
        return -1;
    }
    else if(pid>0)
    {
         exit(0);
    }
    /*2.在子进程中创建新会话*/
    pid=setsid();
    if(pid<0)
    {
        perror("setsid");
        return -1;
    }
    /*3.改变当前目录为根目录*/ 
    int ret=chdir("/mnt/hgfs/share");
    //int ret=chdir("/tmp");
    if(ret<0)
    {
        perror("chdir");
        return -1;
    }
    /*4.重设文件权限掩码*/
    umask(0);
    /*5.关闭文件描述符*/
    for(int i=0;i<getdtablesize();i++)
    {
        close(i);
    }
    return 0;
}
int main(int argc, char *argv[])
{ 
    if(Create_Process()<0)
    {
        printf("create daemon failed\n");
        return -1;
    }

    int line=0;
    FILE *fp=fopen("888","a");
    if(fp==NULL)
    {
        perror("fopen");
        return -1;
    }
    while(1)
    {
        time_t t=time(NULL);
        fprintf(fp,"%3d,%s",line++,ctime(&t));
        fflush(fp);
        sleep(1);
    }
    fclose(fp);
    return 0;
} 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值