当前位置: 首页 > article >正文

【操作系统】守护进程

一、守护进程的概念

守护进程是一个在后台运行并且不受任何终端控制的进程

二、自己实现守护进程

1.预备知识

(1)/dev/null

/dev/null是一个特殊的设备文件,往这个文件里写不进去任何数据,也读不出来任何数据

因此,/dev/null这个设备通常也被成为位桶(bit bucket)或黑洞

(2)setsid()函数

2.代码实现

#pragma once

#include <unistd.h>
#include <signal.h>
#include <cstdlib>
#include <cassert>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define DEV "/dev/null"

void daemonSelf()
{
    // 1.让调用进程忽略掉异常的信号
    signal(SIGPIPE, SIG_IGN);

    // 2.如何让自己不是组长,setsid
    if (fork() > 0)
        exit(0);
    // 子进程--守护进程,精灵进程,本质就是孤儿进程的一种!
    pid_t n = setsid();
    assert(n != -1);

    // 3.守护进程是脱离终端的,关闭或者重定向 以前的进程 默认打开的文件
    int fd = open(DEV, O_RDWR);
    if(fd >= 0)
    {
        dup2(fd ,0);
        dup2(fd ,1);
        dup2(fd ,2);

        close(fd);
    }
    else
    {
        close(0);
        close(1);
        close(2);
    }
}

三、将TCP服务器守护进程化


http://www.kler.cn/a/393735.html

相关文章:

  • 基于海思soc的智能产品开发(两个图像处理来源)
  • 使用 unicorn 和 capstone 库来模拟 ARM Thumb 指令的执行(一)
  • MySQL系列之如何在Linux只安装客户端
  • DOM 规范 — MutationObserver 接口
  • 低代码集成多方API的简单实现
  • 洞察鸿蒙生态,把握开发新机遇
  • 多模态大模型(2)--BLIP
  • 基于springboot的物品回收系统
  • 动手学深度学习69 BERT预训练
  • vue3入门知识(二)
  • Linux 网络编程
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)
  • Linux源码阅读笔记-V4L2框架基础介绍
  • 基于微信小程序的计算机实验室排课与查询系统
  • ubuntu22.04与ubuntu24.10使用Remmina远程桌面共享
  • android开发
  • 主动测量View的宽高
  • 隧道技术-tcp封装icmp出网
  • 【前端】技术演进发展简史
  • 统计HBase表记录条数的方法
  • shellLoad
  • 机器学习(1)线性回归
  • 2024年11月12日Github流行趋势
  • ubuntu cmake CPack将第三方库进行打包
  • 机器学习—决定下一步做什么
  • 关于学习炸鸡佬智能手表 应用硬件IIC1来取代原来软件模拟的IIC