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

守护进程(精灵进程)

目录

前言

1.如何理解前台进程和后台进程

2.守护进程的概念

3.为什么会存在守护进程

4.如何实现守护进程

5.测试

总结


前言

        今天我们要介绍的是关于守护进程如何实现,可能有小伙伴第一次听到守护进程这个概念,感觉很懵,知道进程的概念,但是不知道守护进程是什么,它是否和进程有关联,以及守护进程有什么意义,带着这些疑问,下面,我们就一起来慢慢揭晓这些答案,相信看完这篇文章之后,关于守护进程的话题,你将会有一个清晰的认识。

1.如何理解前台进程和后台进程

如图所示:

 jobs:查看后台进程

例:

[myl@VM-8-12-centos tcp]$ sleep 1000&   
[1] 5492
[myl@VM-8-12-centos tcp]$ sleep 1000 | sleep 2000 &
[2] 6514
[myl@VM-8-12-centos tcp]$ jobs
[1]-  Running                 sleep 1000 &
[2]+  Running                 sleep 1000 | sleep 2000 &

 说明:&表示将该进程设置为后台进程运行,jobs查看后台进程,前面的数字代表作业编号

PGID:代表同一个进程组,一般将一个进程组中的第一个称为是组长,多个进程共同完成一个作业

SID:代表会话ID,不同进程组会话ID相同,代表属于同一个会话

fg + 作业编号:代表将该进程设置为前台进程

ctrl + Z:暂停该进程,并放到后台

bg + 作业编号,启动该进程

[myl@VM-8-12-centos tcp]$ jobs
[1]-  Running                 sleep 1000 &
[2]+  Running                 sleep 1000 | sleep 2000 &
[myl@VM-8-12-centos tcp]$ fg 2
sleep 1000 | sleep 2000
ls
pwd  
^Z[1]   Done                    sleep 1000[2]+  Stopped                 sleep 1000 | sleep 2000
[myl@VM-8-12-centos tcp]$ jobs
[2]+  Stopped                 sleep 1000 | sleep 2000
[myl@VM-8-12-centos tcp]$ bg 2
[2]+ sleep 1000 | sleep 2000 &
[myl@VM-8-12-centos tcp]$ jobs
[2]+  Running                 sleep 1000 | sleep 2000 &

所以作业是可以前后台进行切换的。

当客户端退出的时候,之前的进程也就退出了,包括前台进程和后台进程

2.守护进程的概念

       上面我们介绍了前台进程和后台进程,前台进程只能有一个,而后台进程可以有多个,可以互相切换,都属于同一个会话,共同特点就是当客户端退出之后不管是前台进程还是后台进程,都会退出,而我们今天要介绍的守护进程是自成会话,自成进程组和终端设备无关,除非使用kill命令终止该进程,否则将一直运行,将这种进程被称为是守护进程。

3.为什么会存在守护进程

        当实现了一款服务器,服务器启动之后对外提供服务,不能因为客户端退出,而服务进程也跟着退出了,所以一般将服务进程会设置为守护进程,一直对外提供服务。

4.如何实现守护进程

setsid()函数:生成一个会话ID,自成一个会话

#include <unistd.h>pid_t setsid(void);

使用说明:调用该函数的进程不能是进程组的组长

实现代码:

#pragma once#include<signal.h>
#include<unistd.h>
#include<cstdlib>
#include<cassert>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define DEV "/dev/null" 
void daemonSelf(const char* curPath = nullptr)
{//1.让调用进程忽略掉异常的信号signal(SIGPIPE,SIG_IGN);//2.让自己变成守护进程的前提:以非组长的身份调用setsidif(fork() > 0)exit(0);//子进程 --- 守护进程,精灵进程,本质是孤儿进程的一种pid_t n = setsid();assert(n != -1);//3.守护进程默认是脱离终端的,关闭或者重定向以前进程默认打开的文件://dev/null文件的特点:向该文件中写入内容,会自动清空int fd = open(DEV,O_RDWR);if(fd >= 0){dup2(fd,0);dup2(fd,1);dup2(fd,2);}else{close(0);close(1);close(2);}//4.可选,进程执行路劲发生更改:if(curPath)chdir(curPath);
}

此时就可以在服务器初始化完成,启动之前将该进程设置为服务进程,至此该进程就不会再退出

5.测试

运行截图:

此时通过图片观察到,当服务器启动之后,不再像之前那样变为前台进程,而是自成会话作为后台进程,被其它客户端访问。

总结

        相信看完之后,大家对守护进程是什么就非常熟悉了,今天关于守护进程的介绍就到这里了,感谢大家的阅读,我们下次再见。

相关文章:

守护进程(精灵进程)

目录 前言 1.如何理解前台进程和后台进程 2.守护进程的概念 3.为什么会存在守护进程 4.如何实现守护进程 5.测试 总结 前言 今天我们要介绍的是关于守护进程如何实现&#xff0c;可能有小伙伴第一次听到守护进程这个概念&#xff0c;感觉很懵&#xff0c;知道进程的概念&…...

csdn冷知识:如何在csdn里输入公式或矩阵

目录 1 输入公式 2 输入矩阵 3 如何输入复杂公式 4 如何修改&#xff0c;已经生成的公式 1 输入公式 进入编辑模式点击右边的菜单&#xff1a;公式然后进入公式编辑器&#xff0c;选择右边的 ... 可以选择大括号等&#xff0c;右边还有矩阵符号选择后你需要创建几行几列的…...

【前端】CSS技巧与样式优化

目录 一、前言二、精灵图1、什么是精灵图2、为什么需要精灵图3、精灵图的使用①、创建CSS精灵图的步骤1&#xff09;、选择合适的图标2&#xff09;、合并图片3&#xff09;、设置背景定位 ②、优化CSS精灵图的技巧1&#xff09;、维护方便2&#xff09;、考虑Retina屏幕3&…...

Linux下的系统编程——makefile入门

前言&#xff1a; 或许很多Winodws的程序员都不知道这个东西&#xff0c;因为那些Windows的IDE都为你做了这个工作&#xff0c;但我觉得要作一个好的和professional的程序员&#xff0c;makefile还是要懂。这就好像现在有这么多的HTML的编辑器&#xff0c;但如果你想成为一个专…...

redis常用五种数据类型详解

目录 前言&#xff1a; string 相关命令 内部编码 应用场景 hash 相关命令 内部编码 应用场景 list 相关命令 内部编码 应用场景 set 相关命令 内部编码 应用场景 Zset 相关命令 内部编码 应用场景 渐进式遍历 前言&#xff1a; redis有多种数据类型&…...

Python代理池健壮性测试 - 压力测试和异常处理

大家好&#xff01;在构建一个可靠的Python代理池时&#xff0c;除了实现基本功能外&#xff0c;我们还需要进行一系列健壮性测试来确保其能够稳定运行&#xff0c;并具备应对各种异常情况的能力。本文将介绍如何使用压力测试工具以及合适的异常处理机制来提升Python代理池的可…...

回文子串-中心拓展

给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被视作不…...

2023.8各大浏览器11家对比:Edge/Chrome/Opera/Firefox/Tor/Vivaldi/Brave,安全性,速度,体积,内存占用

测试环境&#xff1a;全默认设置的情况下&#xff0c;均在全新的系统上进行测试&#xff0c;系统并未进行任何改动&#xff0c;没有杀毒软件&#xff0c;浏览器进程全部在后台&#xff0c;且为小窗模式&#xff0c;小窗分辨率均为浏览器厂商默认缩放大小(变量不唯一)&#xff0…...

python中的matplotlib画散点图(数据分析与可视化)

python中的matplotlib画散点图&#xff08;数据分析与可视化&#xff09; import numpy as np import pandas as pd import matplotlib.pyplot as pltpd.set_option("max_columns",None) plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]Fa…...

2023前端面试笔记 —— HTML5

系列文章目录 内容链接2023前端面试笔记HTML5 文章目录 系列文章目录前言一、HTML 文件中的 DOCTYPE 是什么作用二、HTML、XML、XHTML 之间有什么区别三、前缀为 data- 开头的元素属性是什么四、谈谈你对 HTML 语义化的理解五、HTML5 对比 HTML4 有哪些不同之处六、meta 标签有…...

【LeetCode】面试题总结 消失的数字 最小k个数

1.消失的数字 两种思路 1.先升序排序&#xff0c;再遍历并且让后一项与前一项比较 2.转化为数学问题求等差数列前n项和 &#xff08;n的大小为数组的长度&#xff09;&#xff0c;将根据公式求得的应有的和数与数组中实际的和作差 import java.util.*; class Solution {public …...

导入功能importExcel (现成直接用)

1. 实体类字段上加 Excel(name "xxx"), 表示要导入的字段 Excel(name "用户名称")private String nickName; 2. controller (post请求) /*** 导入用户数据** param file 文件* param updateSupport 是否更新支持&#xff0c;如果已存在&#xff0c;则进…...

cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头

不能飞的猪只是没用的猪。 —— 宫崎骏 《红猪》 常见的1种case 记录一下&#xff0c;新电脑安装android studio导入公司那些gradle还是5.5左右的工程以后&#xff0c;各种不适应。编译问题出现了。老电脑都是好好的。 cvc-complex-type.2.4.a: 发现了以元素 ‘base-extensi…...

cortex-A7核IIC实验

iic.h&#xff1a; #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h"/* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_SCL ---> PF14* I2C1_SDA ---> PF15** */#define SET_SDA_…...

task.run()和 await task.run() 区别 await 运行机制

Task.Run() 和 await Task.Run() 都涉及异步编程&#xff0c;但它们在使用场景和效果上有一些区别。1. **Task.Run()&#xff1a;**- Task.Run() 是一个用于在后台线程上执行代码块的方法。它将指定的代码块包装在一个新的Task中&#xff0c;并在后台线程上运行。它不会阻塞调用…...

LeetCode面试经典150题(day 2)

26. 删除有序数组中的重复项 难度:简单 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯…...

阿里云机器学习PAI全新推出特征平台 (Feature Store),助力AI建模场景特征数据高效利用

推荐算法与系统在全球范围内已得到广泛应用&#xff0c;为用户提供了更个性化和智能化的产品推荐体验。在推荐系统领域&#xff0c;AI建模中特征数据的复用、一致性等问题严重影响了建模效率。阿里云机器学习平台 PAI 推出特征平台&#xff08;PAI-FeatureStore&#xff09; 。…...

网络安全工具和资源推荐: 介绍网络安全领域中常用的工具、框架、资源和学习资料

章节1: 前言 随着数字化时代的不断深入&#xff0c;网络安全的重要性愈发凸显。在这个信息爆炸的时代&#xff0c;我们必须保护个人隐私、敏感数据以及网络基础设施免受各种威胁。本文将为您介绍一些网络安全领域中常用的工具、框架、资源和学习资料&#xff0c;帮助您更好地入…...

『C语言入门』探索C语言函数

文章目录 导言一、函数概述定义与作用重要性 二、函数分类库函数自定义函数定义使用好处 三、函数参数实际参数&#xff08;实参&#xff09;形式参数&#xff08;形参&#xff09;内存分配 四、函数调用传值调用传址调用 五、函数嵌套调用与链式访问嵌套调用链式访问 六、函数…...

Django基础3——视图函数

文章目录 一、基本了解1.1 Django内置函数1.2 http请求流程 二、HttpRequest对象&#xff08;接受客户端请求&#xff09;2.1 常用属性2.2 常用方法2.3 服务端接收URL参数2.4 QueryDict对象2.5 案例2.5.1 表单GET提交2.5.2 表单POST提交2.5.3 上传文件 三、HttpResponse对象&am…...

从STM32到华大HC32F460:USB HOST MSC + FatFs R0.13c移植避坑全记录

从STM32到华大HC32F460&#xff1a;USB HOST MSC FatFs R0.13c移植实战指南 作为一名长期使用STM32的嵌入式开发者&#xff0c;第一次接触华大半导体的HC32F460系列MCU时&#xff0c;既兴奋又忐忑。兴奋的是国产MCU的性能已经能够媲美国际大厂&#xff0c;忐忑的是生态差异带来…...

如何为Lightnovel-crawler添加新源:ChatGPT辅助开发实战

如何为Lightnovel-crawler添加新源&#xff1a;ChatGPT辅助开发实战 【免费下载链接】lightnovel-crawler Generate and download e-books from online sources. 项目地址: https://gitcode.com/gh_mirrors/li/lightnovel-crawler Lightnovel-crawler是一款强大的轻小说…...

鸿蒙一气总论(六)

第六卷 本心人道心性人性一气真解卷首引天地立、万象生、文明兴、文字成&#xff0c; 天地大道在外&#xff0c;人心大道在内。天有天象&#xff0c;地有地理&#xff0c;物有物性&#xff0c; 人有人心&#xff0c;心有人性&#xff0c;神有灵机。全书十六字铁律&#xff1a; …...

终极指南:如何用SMUDebugTool免费深度调校你的AMD Ryzen处理器 [特殊字符]

终极指南&#xff1a;如何用SMUDebugTool免费深度调校你的AMD Ryzen处理器 &#x1f680; 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. …...

向华为学习——解读华为流程型组织的基石:业务流架构(BPA)全景解析【附全文阅读】

华为流程型组织 BPA 业务流架构|推介总结 适应人群:企业高管、战略与变革负责人、流程与运营总监、组织与 HR 管理者、数字化与 IT 架构师、咨询顾问。 重要性总结:本文档是华为流程型组织建设的核心方法论,系统解析 BPA 业务流架构全景,明确战略驱动、业务本质、责任落地…...

TTS推理优化:低精度计算与硬件协同设计实践

1. 项目概述&#xff1a;TTS推理的经济学重构在语音技术领域&#xff0c;文本转语音&#xff08;TTS&#xff09;系统正从实验室走向生产环境&#xff0c;成为智能助手、无障碍工具和实时通信系统的核心组件。与大型语言模型&#xff08;LLM&#xff09;不同&#xff0c;TTS需要…...

离线环境下的高效远程开发:手把手搭建VS Code Remote-SSH离线开发环境

1. 为什么需要离线远程开发环境 在不少企业研发场景中&#xff0c;开发机往往处于严格的内网隔离环境。我去年参与过一个军工项目&#xff0c;所有开发设备都禁止连接互联网&#xff0c;第一次遇到这种情况时&#xff0c;传统在线安装方式完全失效&#xff0c;团队花了整整两天…...

双模型工作流架构解析:从原理到实践,构建高效AI应用

1. 项目概述&#xff1a;双模型工作流的魅力与挑战最近在GitHub上看到一个挺有意思的项目&#xff0c;叫cait52099/openclaw-dual-model-workflow。光看名字&#xff0c;openclaw&#xff08;开放之爪&#xff09;和dual-model-workflow&#xff08;双模型工作流&#xff09;这…...

GPU加速向量搜索实战:cuVS核心原理与CAGRA算法应用

1. 从CPU到GPU&#xff1a;向量搜索的范式转移与cuVS的诞生如果你最近在折腾大模型应用、推荐系统或者任何需要处理海量高维数据的项目&#xff0c;那么“向量搜索”这个词对你来说一定不陌生。简单来说&#xff0c;它就是把文本、图片、音频这些非结构化数据&#xff0c;通过模…...

Unity-Editor-Toolbox 上下文菜单操作:复制粘贴组件的简单方法

Unity-Editor-Toolbox 上下文菜单操作&#xff1a;复制粘贴组件的简单方法 【免费下载链接】Unity-Editor-Toolbox Tools, custom attributes, drawers, hierarchy overlay, and other extensions for the Unity Editor. 项目地址: https://gitcode.com/gh_mirrors/un/Unity-…...