IO进、线程——守护进程
守护进程
守护进程的创建过程
1、创建子进程,并退出父进程:
守护进程的创建通常通过fork()系统调用实现。fork()会创建一个新的子进程,该子进程是调用进程(父进程)的副本。父进程会继续执行fork()之后的代码,而子进程将继续执行从fork()调用处开始的代码。为了让守护进程在后台运行,父进程需要退出,确保不会成为僵尸进程。子进程将继续执行后续的守护进程代码。
2、创建新会话:
pid_t setsid(void);
在第一步创建的子进程中,调用setsid()系统调用可以创建一个新的会话。这一步是为了让守护进程独立于原始的终端会话,并且脱离控制终端。新会话的创建使得守护进程不会因为终端关闭而受到影响,并且它也不再拥有控制终端。同时,它成为新的进程组的组长,并且没有控制终端可以控制它。
3、更改工作目录:
int chdir(const char *path);
默认情况下,守护进程的当前工作目录可能是在创建它的父进程所在的目录。为了防止影响其他目录的操作,守护进程应该将当前工作目录切换到一个合适的目录。通常,守护进程会切换到根目录/,或者指定一个特定的工作目录。
4、重设文件掩码:
mode_t umask(mode_t mask);
文件掩码是用来限制新建文件的权限的。它决定了在使用open()或者creat()等函数创建新文件时,文件的默认权限。为了确保守护进程创建的文件不受继承的文件掩码影响,需要调用umask()函数进行重设。通常将文件掩码设置为0,以便允许守护进程创建具有完全权限的文件。
5、关闭从父进程继承过来的所有文件描述符:
getdtablesize()函数和sysconf(_SC_OPEN_MAX)函数都是用于获取文件描述符表的大小,即在一个进程中可以同时打开的文件描述符的最大数量。_SC_OPEN_MAX参数表示最大文件描述符数目。现在系统一般都用sysconf(_SC_OPEN_MAX)函数
//循环closeint maxfd = sysconf(_SC_OPEN_MAX);for(int i = 0; i < maxfd ; i++){close(i);}
在创建子进程时,子进程会继承父进程的所有打开的文件描述符。由于守护进程不需要与控制终端交互,而且也不需要继承任何打开的文件描述符,所以应该将所有不必要的文件描述符关闭。一种常见的做法是循环关闭文件描述符,将所有打开的文件描述符关闭掉,除了 标准输入、标准输出和标准错误描述符(文件描述符0、1和2)。
相关文章:
IO进、线程——守护进程
守护进程 守护进程的创建过程 1、创建子进程,并退出父进程: 守护进程的创建通常通过fork()系统调用实现。fork()会创建一个新的子进程,该子进程是调用进程(父进程)的副本。父进程会继续执行fork()之后的代码&#x…...
通过v-for生成的input无法连续输入
部分代码:通过v-for循环生成el-form-item,生成多个描述输入框 更改之前的代码(key绑定的是item): <el-form-item class"forminput" v-for"(item,index) in formdata.description" :key"…...
Ventoy 使用教程图文详细版
文章目录 Ventoy 使用教程图文详细版简介安装 Ventoy下载 Ventoy制作基于 Ventoy 的启动U盘使用 Ventoy复制 ISO 文件启动电脑选择 ISO 文件结论Ventoy 使用教程图文详细版 简介 Ventoy 是一款开源的 U盘 启动工具,设计用于简化从 U盘 启动操作系统的过程。其中最主要的特点是…...
脚手架 --- command框架<一>
版本:6.0.0 假设脚手架名称:big-cat-cli 实例化 const commander require(commander) const program new commander.Command()program 基本信息配置 program.name(Object.keys(pkg.bin)[0]) // 赋值name, 显示在useage 前部分.usage(<command>…...
SpringBoot整合Zookeeper
引入Jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>s…...
Java和C#选哪个?
选择语言是一个非常重要的决定,因为它可能会对你的职业生涯产生深远的影响。C#和Java都是非常流行的编程语言,它们都有自己的优点和适用场景。 可以从下面几个方面来考虑: 1、就业前景: 就业前景是选择专业时需要考虑的一个非常…...
首批!棱镜七彩通过汽车云-汽车软件研发效能成熟度模型能力评估
2023年7月25-26日,由中国信息通信研究院、中国通信标准化协会联合主办的“2023年可信云大会”隆重召开。会上,在中国信息通信研究院云计算与大数据研究所副所长栗蔚的主持下,中国信通院发布了“2023年上半年可信云评估结果”,并由…...
【Docker】容器的数据卷
目录 一、数据卷的概念与作用 二、数据卷的配置 三、数据卷容器的配置 一、数据卷的概念与作用 在了解什么是数据卷之前我们先来思考以下这些问题: 1.如果我们一个容器在使用后被删除,那么他里面的数据是否也会丢失呢?比如容器内的MySQL的…...
CentOS7安装jenkins
一、安装相关依赖 sudo yum install -y wget sudo yum install -y fontconfig java-11-openjdk二、安装Jenkins 可以查看官网的安装方式 安装官网步骤 先导入jenkins yum 源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo…...
Hadoop的伪分布式安装方法
实验环境: 操作系统:Linux (Ubuntu 20.04.5) Hadoop版本:3.3.2 JDK版本:1.8.0_162 hadoop与jdk的安装包可详见博客中: https://blog.csdn.net/weixin_52308622/article/details/131947961?spm1001.2014.3001.550…...
iOS 应用上架的步骤和工具简介
APP开发助手是一款能够辅助iOS APP上架到App Store的工具,它解决了iOS APP上架流程繁琐且耗时的问题,帮助跨平台APP开发者顺利将应用上架到苹果应用商店。最重要的是,即使没有配置Mac苹果机,也可以使用该工具完成一系列操作&#…...
【信号去噪】基于马氏距离和EDF统计(IEE-TSP)的基于小波的多元信号去噪方法研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
智驾SOC shell编程应用实战笔记
文章目录 1. 引言2. 基础2.1 "$"的作用3. 实战笔记3.1 统计某一端口的连接数3.2 获取当前脚本执行的绝对路径3.3 判断某一文件是否存在参考1. 引言 智驾SOC(System on a Chip)是指集成了处理器、存储器、外设和其他功能模块的片上系统,广泛应用于汽车领域中的智能…...
C#实现计算题验证码
开发环境:C#,VS2019,.NET Core 3.1,ASP.NET Core API 1、建立一个验证码控制器 新建两个方法Create和Check,Create用于创建验证码,Check用于验证它是否有效。 声明一个静态类变量存放列表,列…...
【lesson6】Linux下:第一个小程序,进度条代码
文章目录 准备工作sleep问题fflush回车与换行的区别 进度条代码 准备工作 sleep问题 首先我们来看一段代码: 这时候有个 问题这个代码是输出“hello world”还是先sleep三秒? 再来一段代码 这个代码是先sleep三秒还是先输出“hello world”ÿ…...
PostgreSQL实战-pg13主从复制切换测试
PostgreSQL实战-pg13主从复制切换测试 配置PostgreSQL的环境变量 修改/etc/profile文件, vim /etc/profile添加如下内容: # 指定postgres的数据位置 export PGDATA=/var/lib/pg13/data数据联动测试 清空数据表数据 TRUNCATE TABLE tablename;主库清空数据表数据 从库对…...
如何使用OpenCV库进行图像检测
import cv2 # 加载Haar级联分类器 face_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_frontalface_default.xml) # 读取输入图像 img cv2.imread(input_image.jpg) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 使用Haar级联分类器进行人脸检测 …...
Mybatis中where 1=1 浅析
在一些集成mybatis的工程中经常看到where11 的代码,也有同事问我,这样写有什么用,下面对其进行简单的分析记录一下。 1、场景 看下面这样一段xml中的代码 <select id"queryBook" parameterType"com.platform.entity.Book…...
element中el-input组件限制输入条件(数字、特殊字符)
1、只能输入纯数字 <el-input v-model"aaa" type"text" input"(v)>(aaav.replace(/[^\d]/g,))" /> 2、只能输入纯数字和小数(比如:6.66) <el-input v-model"aaa" type"text&quo…...
会议OA项目之会议发布(一)
目录 前言: 会议发布的产品原型图: 1.会议发布 1.1实现的特色功能: 1.2思路: 使用的数据库: 我们要实现多功能下拉框的形式选择可以参考原文档:https://hnzzmsf.github.io/example/example_v4.html#down…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
