Linux之进程--进程控制
在操作系统中进程控制Process Control是最核心、最基础的系统能力之一。我们运行的每一个程序、每一条命令本质都是操作系统对进程的创建、调度、等待和销毁的完整生命周期管理。一、进程控制核心概念进程是操作系统资源分配和调度的基本单位每个进程都有唯一的PID进程ID并由 PCB进程控制块维护状态、资源、父子关系等信息。Linux 下所有进程均由父进程创建子进程最终形成以init/systemd为根的进程树。进程的完整生命周期分为三步创建父进程通过系统调用生成子进程运行/终止子进程执行业务逻辑主动或被动退出等待回收父进程获取子进程退出状态回收资源避免僵尸进程二、进程创建进程创建在之前的学习我们就了解过一部分fork一个新的进程就是内核数据结构代码,数据二、进程创建进程创建在之前的学习我们就了解过一部分fork创建子进程一个新的进程就是内核数据结构代码,数据fork 返回值三种情况pid0当前是父进程返回值为子进程 pidpid0当前是子进程pid0fork 失败进程数达到系统上限、内存不足为什么我们要创建进程??让子进程和父进程分流,子进程跑父进程的代码1父子进程分流执行分担任务fork之后父子进程共享同一份程序代码但拥有独立进程调度流fork返回值区分逻辑父进程返回子进程 pid子进程返回 0父进程负责监听、调度、等待子进程单独执行业务逻辑两者互不阻塞。 典型场景网络服务器每来一条客户端连接就 fork 一个子进程处理读写。完成进程替换2配合 exec 系列函数完成进程程序替换单纯 fork 只能复制父进程代码如果想让子进程运行全新可执行程序比如 shell 执行外部命令必须搭配exec族函数fork创建子进程复刻父进程环境子进程内部调用execvp/execve丢弃原有代码段加载新程序 父进程不受影响继续原有逻辑。 场景bash 输入lsshell 先 fork 子进程子进程 exec 替换为 ls 程序执行。写时拷贝vs浅拷贝浅拷贝写时拷贝操作系统会将进程fork出来之后的进程他们的数据变成只读如果有任意一方要对数据来进行修改,那么os不会让其直接对该数据进行修改,会先将数据拷贝出来一份,然他再备份的那一块再进行改三、进程终止进程终止就是要释放代码和数据内核数据结构首先先释放代码和数据,然后再释放内核数据结构为什么呢??因为父进程是要知道子进程结束的的具体信息,可以分为以下三种a,b,c都可以利用两个变量来记录这个信息int sigint exit_code再main函数中return的就是进程退出码查看进程终止信号echo ?进程退出码可以根据我们自己自定义也可以是用系统的strerror1.查看系统自己的strerror系统的退出码对应的信息但是我们使用的比较多的还是自定义依靠我们自定义的宏对于C这种情况我们需要知道什么情况使其发生异常,怎么被kill所以退出码对其并没有意义选项场景描述是否触发信号对应信号名称 信号编号 (Signumber)a代码结束返回正确无信号无b代码结束结果不符合预期无信号无c代码未跑完进程异常结束有致命信号1.SIGINT(2)CtrlC 中断2.SIGSEGV(11)段错误3.SIGKILL(9)强制杀进程4.SIGFPE(8)除零崩溃那么应该要怎么退出呢exit vs _exit这是我们之前学到的僵尸进程子进程结束后,父进程没有对子进程进行回收,子进程会一直处于僵尸状态,当我再命令界面ctrlc会将全部的进程都杀死四、进程等待Waitpid_t wait(int *wstatus);wstatus传出参数保存子进程退出状态传NULL表示不关心退出码。阻塞等待:没有子进程退出,父进程一直等待.直到任意一个子进程结束,而且只能是任意的子进程不能说自己想要的子进程执行pid_t ret fork();后系统会生成两份独立进程同一个 fork 返回两个不同值父进程返回 新创建子进程的 PID正整数子进程返回0创建失败内存不够、进程数上限父子都返回-1ret接收了wait子进程的pidWaitpid#include sys/wait.h pid_t waitpid(pid_t pid, int *wstatus, int options);参数 1pid —— 指定要等待的子进程核心区分点分 4 种取值规则pid 0只等待 PID pid 这唯一一个子进程其他子进程退出也不会触发返回。 例waitpid(child_pid, st, 0)只等刚才 fork 出的子进程。pid 0等待和当前父进程同进程组的任意子进程。pid -1等待所有子进程等价wait(st)。pid -1取绝对值abs(pid)作为进程组 ID等待该进程组下所有子进程。参数 2wstatus —— 接收子进程退出状态传NULL不关心子进程退出码丢弃状态传int变量地址内核会把子进程退出信息存入该变量配合宏解析看是否正常终止,如果正常终止就就返回0非正常终止要看退出码参数 3options —— 控制阻塞行为位或组合0默认阻塞模式无特殊功能。WNOHANG非阻塞 没有子进程退出时函数立刻返回0父进程不会卡住可以继续执行业务逻辑。WUNTRACED子进程收到SIGSTOP/SIGTSTP暂停时waitpid 也会返回。WCONTINUED暂停的子进程收到SIGCONT恢复运行时waitpid 也会返回。看一下下面那个现象status对应的不是退出码吗???为什么这里显示不是1,而是256当然我们也可以尝试用真的退出码故意让被除数为0;第 8 个信号8) SIGFPE 含义浮点运算异常除零、浮点数溢出等。父进程通过waitpid是如何获得子进程的退出信息的??子进程结束后不会立即退出,先是释放代码和数据,但是内核数据结构并没有释放,里面记录退出码和退出信号并且处于Z状态,父进程可以通过waitpid获取子进程的pid和一些信息

相关新闻

Claude Code隐写术事件解析与开发者安全防护

Claude Code隐写术事件解析与开发者安全防护

1. Claude Code隐写术事件概述2026年6月30日,开发者社区爆出震惊业界的消息:Anthropic公司在其开源的AI编程助手Claude Code中植入了隐写术逻辑。这一发现由开发者Adnane Khan在逆向分析v2.1.91版本二进制文件时揭露,相关技术报告迅速在GitHu…

2026/7/21 5:46:46阅读更多 →
TypeScript本地化编译技术解析与实践指南

TypeScript本地化编译技术解析与实践指南

1. TypeScript本地化编译的技术突破2026年TypeScript生态迎来重大革新——开发者终于能够将TS代码直接编译为本地可执行文件,彻底摆脱JavaScript运行时的束缚。这一突破性进展主要基于三大核心技术:SWC编译链:由Rust编写的高性能TypeScript/J…

2026/7/21 5:46:46阅读更多 →
RAG技术实战:从原理到生产级应用优化

RAG技术实战:从原理到生产级应用优化

1. RAG技术全景解析:从概念验证到生产落地的完整路径 检索增强生成(Retrieval-Augmented Generation)技术正在重塑AI应用开发范式。作为大模型时代的关键基础设施,RAG通过将信息检索与文本生成能力相结合,有效解决了传…

2026/7/21 5:46:46阅读更多 →
Dify文本生成应用性能瓶颈诊断,2024最新Benchmark数据揭示92%用户忽略的3个致命配置

Dify文本生成应用性能瓶颈诊断,2024最新Benchmark数据揭示92%用户忽略的3个致命配置

更多请点击: https://kaifayun.com 第一章:Dify文本生成应用性能瓶颈诊断,2024最新Benchmark数据揭示92%用户忽略的3个致命配置 2024年Q2 Dify官方基准测试(基于v0.12.0–v0.15.2全量生产环境采样)显示:在…

2026/7/22 0:57:38阅读更多 →
AI视频配音自动同步:3步实现唇形/语调/节奏100%匹配,附开源工具链与避坑清单

AI视频配音自动同步:3步实现唇形/语调/节奏100%匹配,附开源工具链与避坑清单

更多请点击: https://intelliparadigm.com 第一章:AI视频配音自动同步:技术演进与核心挑战 AI视频配音自动同步正从早期基于固定时长对齐的规则方法,演进为融合语音识别(ASR)、文本-语音对齐(…

2026/7/22 0:57:38阅读更多 →
【独家】基于217个真实AI项目复盘的场景适配决策树(含GPU成本/延迟/准确率三维度阈值标定)

【独家】基于217个真实AI项目复盘的场景适配决策树(含GPU成本/延迟/准确率三维度阈值标定)

更多请点击: https://codechina.net 第一章:AI模型适用场景分析 AI模型并非万能工具,其价值高度依赖于具体业务需求与数据特性。选择合适模型的关键在于理解任务类型、数据规模、实时性要求及可解释性约束。脱离场景空谈“大模型”或“小模型…

2026/7/22 0:57:38阅读更多 →
【完美复现】基于混合广义积分器的光储并网逆变器谐波自适应补偿控制研究(Simulink仿真实现)

【完美复现】基于混合广义积分器的光储并网逆变器谐波自适应补偿控制研究(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…

2026/7/22 0:57:38阅读更多 →
靶场刷满分,实战挖不到洞?彻底揭秘学习与实战的核心差距

靶场刷满分,实战挖不到洞?彻底揭秘学习与实战的核心差距

📌 前言几乎所有新人都会遇到同一个瓶颈:靶场随便通关、题目刷得满分,一遇到真实站点完全无从下手。这不是你技术差,是靶场环境和真实企业环境存在天然壁垒。本篇彻底拆解差距,教你从“靶场选手”蜕变为“实战选手”。…

2026/7/22 0:57:38阅读更多 →
AI 推理即服务(AIaaS)的架构演进:从单体推理到 FaaS 化推理的工程路径

AI 推理即服务(AIaaS)的架构演进:从单体推理到 FaaS 化推理的工程路径

AI 推理即服务(AIaaS)的架构演进:从单体推理到 FaaS 化推理的工程路径 一、单体推理架构为何不是终点而是起点 很多团队的 AI 推理服务最初是一个单体应用:Flask/FastAPI 包装一个 PyTorch 模型,通过 docker run 启动&…

2026/7/22 0:55:38阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →