美文网首页
linux c创建守护进程

linux c创建守护进程

作者: 一路向后 | 来源:发表于2021-08-06 22:22 被阅读0次

1.源码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <signal.h>
#include <time.h>
#include <syslog.h>

int init_daemon(void)
{
    int pid;
    int i;

    //忽略终端I/O信号, STOP信号
    signal(SIGTTOU, SIG_IGN);
    signal(SIGTTIN, SIG_IGN);
    signal(SIGTSTP, SIG_IGN);
    signal(SIGHUP, SIG_IGN);

    pid = fork();
    if(pid > 0)
    {
        //结束父进程, 使得子进程成为后台进程
        exit(0);
    }
    else if(pid < 0)
    {
        return -1;
    }

    //建立一个新的进程组
    setsid();

    pid = fork();
    if(pid > 0)
    {
        //保证该进程不是进程组长, 同时让该进程无法再打开一个新的终端
        exit(0);
    }
    else if(pid < 0)
    {
        return -1;
    }

    //关闭所有父子进程继承的不再需要的文件描述符
    for(i=0; i<NOFILE; close(i++));

    //改变工作目录
    chdir("/");

    //将文件当时创建屏蔽字设置为0
    umask(0000);

    //忽略SIGCHLD信号
    signal(SIGCHLD, SIG_IGN);

    return 0;
}

int main()
{
    time_t now;

    init_daemon();

    syslog(LOG_USER|LOG_INFO, "Test Daemon Process!");

    while(1)
    {
        sleep(8);

        time(&now);

        syslog(LOG_USER|LOG_INFO, "System: %s", ctime(&now));
    }

    return 0;
}

2.编译源码

$ gcc -o daemon daemon.c -std=c99

3.运行及其结果

$ ./daemon
$ ps -ef | grep daemon
helen       1616      1  0 22:19 ?        00:00:00 ./daemon
helen       1634   1475  0 22:22 pts/0    00:00:00 grep --color=auto daemon

相关文章

  • linux c创建守护进程

    1.源码实现 2.编译源码 3.运行及其结果

  • python下编写守护进程

    **1、编写守护进程的步骤 **创建守护进程其实和c创建守护进程的方式大同小异了,其实就是那么几个步骤: 创建子进...

  • linux进程

    linux进程包含如下几个方面:1:进程的控制(创建,等待子进程终止,执行程序,退出)2:守护进程(什么是守护进程...

  • Linux 创建守护进程

    一 :背景 二 :创建启动脚本 三 : 创建守护进程 ./kafka-protected.sh start 执行下...

  • PHP创建守护进程

    PHP 创建守护进程 执行守护进程

  • 进程

    创建子进程 循环创建N个子进程 回收子进程 守护进程

  • rsync服务企业应用

    守护进程服务企业应用: 守护进程多模块功能配置 守护进程的排除功能实践 守护进程来创建备份目录 守护进程的访问控制...

  • 进程守护进程

    什么是守护进程?Linux 的大多数服务器就是用守护进程实现的,使用ps -axj可以查看守护进程: 守护进程基本...

  • .NET跨平台实践:用C#开发Linux守护进程_3

    背景: 阅读新闻 .NET跨平台实践:用C#开发Linux守护进程 [日期:2016-04-05] 来源:Linu...

  • 孤儿进程、僵尸进程和守护进程

    [TOC] 参考资料 Linux 之守护进程、僵死进程与孤儿进程【概述】-Linux内核三驾马车之-进程管理【Li...

网友评论

      本文标题:linux c创建守护进程

      本文链接:https://www.haomeiwen.com/subject/vdnivltx.html