守护进程的编程规则

SECS/GSM 测试工具 SecsExpress 的配置与实战应用 本文详细介绍了半导体设备通讯测试工具SecsExpress的配置与实战应用。作为专业的SECS/GSM协议调试工具,它能模拟Host与设备端进行双向测试,帮助工程师快速部署、验证通讯链路,并高效排查与RMS系统或真实设备间的联调问题,是提升半导体工厂设备集成与维护效率的利器。 阅读详情

要理解守护进程的编程规则必须先搞明白进程组、会话、组长进程等关系。

1.进程组

每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或者多个进程的集合。每个进程组都有一个组长进程。组长进程的标识是,其进程ID和进程组ID相等。

2.会话

会话是一个或者多个进程组的集合。

进程可以调用setsid(void)创建一个新会话,如果调用此函数的进程不是一个进程组的组长,则此函数就会创建一个新会话,结果将发生下面三件事:

1)该进程编程新会话的首进程(会话首进程是创建该会话的进程),此时,该进程是新会话中的唯一进程。

2)该进程成为一个新进程组的组长进程,新进程组的ID是该调用进程的进程ID

3)该进程没有控制终端。如果在调用setsid之前有控制终端,这种联系也会中断。这刚好满足守护进程的规则,我们可以预想到,要编写守护进程需要调用setsid。


注意,如果该调用进程本身是进程组的组长,调用setsid返回错误。为了不保证发生这种情况,通常先fork,然后使其父进程终止,而子进程则继续。


3.守护进程的编程规则

(1)调用umask将文件模式创建屏蔽字设置为0

(2)调用fork,父进程退出,然后调用setsid()

(3)将工作目录改为根目录。从父进程继承来的当前工作目录可能在一个装配文件系统中,因为守护进程通常在系统再引导之前是一直存在的,所以如果守护进程的当前工作目录在一个装配文件系统中,那么该文件系统不能被卸载,这与装配文件系统的原意不符。

(4)关闭需要的文件描述符。这使得守护进程不再持有从其父进程继承而来的文件描述符,可以使用open_max()或者getrlimit()来判定最高文件描述符的值,并关闭所有到該值的描述符

(5)重定向标准输入、输出、错误输出

8、音频运行时系统的架构设计 本文深入探讨了音频运行时系统的分层设计及其优势,包括逻辑层和物理层的功能划分。通过分层设计,开发者可以更轻松地管理和优化音频资源,确保其在不同平台上的高效运行。文章还介绍了平台适配与优化、错误处理与调试以及未来发展方向等内容,为开发者提供了宝贵的参考和指导。 阅读详情

相关推荐

【codex教程】Codex 注册和使用教程(2026最新版)

Codex 是 OpenAI 推出的 AI 编程助手,可以帮助开发者阅读代码、修改代码、运行命令、生成测试、排查 bug、做代码审查,也可以在终端、IDE、Codex App 或网页端使用。根据 OpenAI 帮助中心,截至 2026 年 6 月,Codex 已包含在 Free、Go、Plus、Pro、Business、Edu 和 Enterprise 等 ChatGPT 方案中,但不同套餐的使用额度会有所不同。适合开发者在终端中使用。如果你想在命令行里使用 Codex,可以安装 Codex CLI。

与时俱进,开放共享 2万+

Linux守护进程编程规则

写这篇blog的原因在于,工作中经常需要写一些守护进程(daemon)。 而我们创建守护进程的方法,往往是简单粗暴,不按照守护进程的编程来。 创建守护进程的一般方法是: pid = fork(); if (pid < 0) { // fork failed printf("fork error\n"); exit(1); } else if (pid > 0) { // p

tuzhutuzhu的专栏 1584

信息奥赛课课通(C++)p154-1近似排序

试题描述 读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30. 输入要求 1行,包含两个用空格隔开的自然数,这两个自然数给出了待排序数的范围,其中1≤第一个数≤第二个数≤999999999,两个数之差不超过100. 输出要求 输出排序后的数据,每行输出...

mengdicfm的博客 7280

Linux输入/输出重定向的使用

1、Linux标准输入输出 传统的Linux标准输入、输出设备主要是键盘和显示器,详细介绍如下表所示。 Linux标准输入输出 设备 设备文件名 文件描述符 类型 符号表示 键盘 /dev/stdin 0(缺省是键盘,为0时是文件或者其他命令的输出) 标准输入 显示器 /dev/stdout 1(缺省是屏幕

Fantasy Dancer 1万+

Halcon深度图转点云实战:从XYZ映射到3D可视化全解析

本文详细解析了如何使用Halcon将深度图转换为点云图,涵盖从XYZ映射到3D可视化的全流程。通过实战案例和代码示例,介绍了深度图预处理、xyz_to_object_model_3d核心转换及3D可视化技巧,适用于工业检测、三维重建等场景。

stem5的博客 765

PythonWeb开发框架—Django之工程创建和models的定义和增删改查

文章介绍了Django工程的创建、models的定义和增删改查

weixin_42476668的博客 990

【Linux】教你三分钟学会重定向

重定向是什么 在学习了文件描述符及其分配规则(https://blog.youkuaiyun.com/Miss_Monster/article/details/86411039)之后,了解到操作系统总是找到当前files_struct的指针数组中没有被使用的最小的一个下标,作为新的文件描述符。在代码的结尾我们发现,文件可以通过close来关闭,既然可以关闭,那如果我将标准输出1关闭,再打开myfile文件,...

Miss_Monster的博客 582

美团mtgsig 1.2算法分析

mtgsig1.2的一些算法总结

记录一些web逆向的过程 3487

Linux下输入、输出重定向用法

标准输入:键盘   设备文件名: /dev/stdin 文件描述符:0 标准输出:显示器 设备文件名: /dev/sdtout和/dev/sdterr  前者标准输出,文件描述符:1  后者标准错误输出,文件描述符:2 标准输出重定向: 格式:命令 > 文件 以覆盖的方式,将输出到指定文件或设备中      命令 >> 文件 以追加的方式,将输出到指定文件或设备中  标准错误输出重定向:

有灯就可以编程的博客 5593

(SEED-Lab)Buffer Overflow Vulnerability Lab缓冲区溢出实验

(SEED-Lab)Buffer Overflow Vulnerability Lab 欢迎大家访问我的GitHub博客 https://lunan0320.cn 文章目录一、实验目的二、实验步骤与结果2.1 环境初始化2.2 Task1 运行shellcode2.3漏洞程序2.4 Task 22.5 Task 3: ASLR2.6 Task 4: Stack Guard2.7 Task 5:不可执行栈三、参考文献 一、实验目的 理解缓冲区溢出攻击的原理以及如何实施攻击 理解针对缓冲区溢出的防御措施

lunan的博客 8981

Dify 第 2 篇 Dify 插件离线安装

Dify是一个支持插件扩展的AI平台,其插件市场提供5种类型插件(模型、工具、Agent策略、扩展、插件包)。由于默认pip安装速度慢,可通过dify-plugin-repackaging工具将插件转换为离线包(使用阿里云镜像加速)。该工具提供两种方式:1)自备Python环境执行脚本;2)使用Docker环境(推荐)。脚本支持从Dify市场或GitHub下载插件,并重新打包为含依赖的离线包,便于通过"本地插件"方式快速安装。

甘蓝的专栏 1261

Linux守护进程的编程规则

本文转载自:http://blogold.chinaunix.net/u/27396/showart_307883.html 守护进程的编程规则: 1、屏蔽一些有关控制终端操作的信号 防止在守护进程没有正常运转起来时,控制终端受到干扰退出或挂起。 2、脱离控制

fengxinze的专栏 567

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值)【含Matlab源码 4887期】

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值) 完整的代码,包运行;运行操作视频见优快云资源!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 810

守护进程之编程规则

 1. 概述     守护进程也称精灵进程(daemon)是生成器较长的一种进程。因为他们没有控制终端,所以说它们是在后台运行的。     我们可以ps命令来查看系统中各个进程的状态。     #ps -auxj     选项-a显示有其它用户所拥有的进程的状态。-x显示没有控制终端的进程状态。-u以用户的格式来显示进程的状态。-j显示与有关的信息:会话ID、进程ID、控制终端以及

缘起宇轩阁 713

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

守护进程之编程规则、出错记录、单实例守护进程和守护进程的惯例

本文来自个人博客:https://dunkwan.cn 编程规则 在编写守护进程时,需要遵循一些基本规则。下面就说明一下这些规则。 首先调用umask函数将文件模式创建屏蔽字设置为一个已知值。 调用fork函数,返货是父进程exit。 调用setsid创建一个新会话。 将当前工作目录更改为根目录。 关闭不再需要的文件描述符。 某些守护进程打开/dev/null使其具有文件描述符0、1和2,这...

Dunk.Wan 376

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

守护进程(daemon)编程规则

http://www.yuanma.org/data/2008/0417/article_2999.htm 精灵进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时起动,在系统 关闭时终止。因为它们没有控制终端,所以说它们是在后台运行的。UNIX系统有很多精灵进 程,它们执行日常事物活动。 我们在编写程序时往往要用到精灵进程,下面介绍精灵进程的编程

lwpping的专栏 481

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Linux守护进程(daemon)编程规则

在编写守护程序时需要遵循一些基本的规则

四年 2189

守护进程编程规则(UNIX环境高级编程笔记)

  (1)调用umask将文件模式创建屏蔽字设置为一个已知值。   (2)调用fork,然后使父进程exit。   (3)调用setsid创建一个新会话。然后使调用进程:(a)称为新会话的首进程,(b)成为一个新进程组的组长进程,(c)没有控制终端。   (4)将当前工作目录更改为根目录。某些守护进程可能会把当前工作目录更改到某个指定位置,并在此位置进行它们的全部工作。   (5)关闭不再需要的文...

The_perfect_world的博客 211

Linux之守护进程

1.守护进程是在操作系统后台运行的一种特殊类型的进程,它独立于前台用户界面,不与任何终端设备直接关联。这些进程通常在。

m0_74057742的博客 1196

unix环境高级编程 pdf_UNIX环境高级编程(APUE)学习之路第13章守护进程-13.1守护进程介绍与编写规则...

引言守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止。 因为它们没有控制终端,所以说它们是在后台进行的。UNIX系统有很多守护进程,它们执行日常事务活动。2 守护进程的特征我们执行ps -axj命令。 参数说明: -a:显示由其他用户所拥有的进程的状态 -x:显示没有控制终端的进程状态 -j:显示与作业有关的信息。 部分输出: ![IMAGE](re...

weixin_39859715的博客 94

守护进程的编程规则(加入系统日志)和改进

守护进程:一般是指 Linux中的后台服务进程,它是一个生存周期较长的进程,如其父进程为init进程,通常独立于控制终端,即 不接受电脑用户的直接操作。守护进程是一个特殊的孤儿进程。 会话(session): 会话是一个或多个进程组的集合。通常一个会话开始于 用户登录,终止于用户退出,在此期间用户运行的所有进程都属于会话 进程组:每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。每个进程组有一个组长进程,组长进程的进程ID等于进程组ID。 如果调用setsid()的进程不

pdx_ll的博客 229

linux守护进程编程(1)

守护进程的编程规则:1、屏蔽一些有关控制终端操作的信号防止在守护进程没有正常运转起来时,控制终端受到干扰退出或挂起。2、脱离控制终端,登录会话和进程组登录会话可以包含多个进程组,这些进程组共享一个控制终端,这个控制终端通常是创建进程的登录终端。控制终端,登录会话和进程组通常是从父进程继承下来的。我们的目的就是要摆脱它们,使之不受它们的影响。其方法是在fork()的基础上,调用setsid()使进程

tyyhong的专栏 1229

进程篇——守护进程

说明:   本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。   QQ 群 号:513683159 【相互学习】 内容来源:   《Linux网络编程》、《linux系统编程》 什么是守护进程?   守护进程运行在后台,不与任何控制终端相关联。守护进程通常在系统启动时就运行,它们以root用户运行或者其他特殊的用户(例如 apache和postfix),并处理一些系统级的任务。习惯上守护进程的名字通常以d结尾(就

weixin_42645653的博客 1729

Linux系统编程学习笔记(十一)守护进程

守护进程: 守护进程是生存时间比较长的一种进程. 它们常常在系统自举时启动, 仅在系统关闭时才终止. 因为它们没有控制终端, 所以说它们是在后台运行的. 先来介绍一些Linux系统常见的守护进程: init: 它的pid为1, 是系统守护进程, 负责启动系统服务, 这些服务通常自己也拥有守护进程. keventd: 为在内核中运行计划执行的函数提供进程上下文. kapmd: 对...

fuliang 207
上一篇: linux进程同步方式总结
下一篇: ELF文件格式
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值