发布时间:2026/8/30 15:19:59
Linux:进程的标识符、进程状态的认识 一、前言上篇文章我们简单的介绍了PCB(task_struct)的属性,下面讲一下标识符和状态以及在讲的过程中引出的的知识和命令二、标识符2.1pidpid是标识进程唯一的标志,我们可以通过getpid();获取进程的id,返回值是pid_t(也就是int,只是typedef了)比如我运行的一段C语言的简单死循环的程序(不是死循环运行进程就结束了)2.2ppid也叫做父进程,我们每个进程都有父进程,比如上面创建的进程也有父进程,是bash命令解释器,查看父进程id是getppid();2.3创建子进程——fork()如果要对该进程下创建子进程就需要fork()系统函数调用接口返回值位pid_t如果返回0j就是子进程,如果返回值大于0是父进程,返回-1就是创建子进程失败下面是实例:这里也会延伸出几个疑问:问题一:为什么创建的子进程返回0,而父进程返回子进程的pid呢因为子进程本身只有一个,父进程可以有多个子进程,为了区分是执行哪个子进程所以返回的是pid也就是日常生活一个孩子只有一个爸爸,一个爸爸能有多个孩子,孩子都有自己的名字爸爸知道了名字就知道是哪个孩子!!!问题二:上面一段代码怎么执行了两次if语句呢?前台运行和后台运行我们可以让程序在后台运行就是可以在显示器上输入其他指令通过./可执行程序 这个就可以实现这也像我们手机的后台程序一样不删除不会结束运行2.4查看进程查看进程在哪里可以通过ls /proc查看所有进程ps aux / ps axj 命令• a显⽰⼀个终端所有的进程包括其他⽤⼾的进程。• x显⽰没有控制终端的进程例如后台运⾏的守护进程。• 显⽰进程归属的进程组ID、会话ID、⽗进程ID以及与作业控制相关的信息• u以⽤⼾为中⼼的格式显⽰进程信息提供进程的详细信息如⽤⼾、CPU和内存使⽤情况由上通过 ls /proc/ -l 可以看出进程是个文件,再详细看的话exe就是当前程序运行的路径,cwd是进程所处的路径三、进程状态3.1操作系统书籍讲的状态就绪状态和运行状态创建状态不多说,就绪状态就是一个进程在一个调度队列中准备与CPU进行交互调度队列:FIFO的形式先进先出(真实每个操作系统的实现队列的形式不同,这里就讲最常见的队列形式),管理的是PCB结构体注意:但很多书上都是把在调度队列中的进程就称在运行状态,我们普遍都是这样的认知,所以以后没有特殊条件就认为在调度队列中的进程就称为运行状态阻塞状态就是在运行的进程需要键盘输入等操作时才能进行下一步操作,常见的就是scanf/cin输入大概过程就是该进程会先从调度队列脱离,等键盘输入数据后,因为操作系统是对硬件的管理者所以它会最先知道数据已经输入,本质也是硬件设备其实也是结构体比如:struct device{//…struct task_structwaite_queue然后再回到调度队列里再与CPUjiaohu交互阻塞挂起状态当内存不够时,OS会将在阻塞状态的进程的数据先拷贝到磁盘特定的区域内,内存够了再重新回到内存中就绪挂起状态也就是在调度队列中的进程也有可能因为内存不足而不执行等内存足够再与CPU调度,也就是我们可能打开一个应用闪退的效果,可能就是你的后台占太多了应用3.2Linux下的进程状态下面的结构体就是Linux源码的状态状态显示也是通过ps命令查看的R状态并不意味着进程⼀定在运⾏中它表明进程要么是在运⾏中要么在运⾏队列⾥。S状态意味着进程在等待事件完成这⾥的睡眠有时候也叫做可中断睡眠interruptible sleep常见的就是我们scanf输入但是拿上面我们讲的父子进程分流的代码运行时状态不是R,是S原因就是:我们printf打印到显示器中本质是底层调用了系统接口write()函数,我们用户的缓冲区的数据是先同构write接受的当他接受到一定量时会停止接收,先向显示器打印释放掉,那这个等待过程就是休眠状态,所以99%的情况是S状态,很少情况能看到R状态也就是向wirte()输入数据D状态D磁盘休眠状态Disksleep有时候也叫不可中断睡眠状态uninterruptiblesleep在这个状态的进程通常会等待IO的结束。与S的区别:补充知识:就是当内存不足时,OS可以选择性的杀死也就是结束掉一些休眠状态的进程以保证其他正在运行的进程的状态,OS可以杀死S状态的进程,不可以杀死D状态的进程,D状态往往是与磁盘交互把内存里的数据写入到磁盘上,如果一旦杀死进程磁盘不能收到进程的信号也就会直接把写入的数据删除这往往是很严重的!!!比如:这个进程是500MB的银行存款账单信息,你一旦因为内存不够而杀死写入到对应磁盘中,就相当于损失了千万或亿的数据是很严重的T状态T停⽌状态stopped可以通过发送SIGSTOP信号给进程来停⽌T进程。这个被暂停的进程可以通过发送SIGCONT信号让进程继续运⾏通过kill -19 pid停止进程 kill-18 pid恢复暂停的进程X状态和ZX;就是死亡状态,进程结束时的状态我们一般看不到它是把代码和数据清理掉,进程还在,但是一般进程都是被系统管理它会帮你把PCB给清理掉Z: 僵死状态Zombies是⼀个⽐较特殊的状态。当进程退出并且⽗进程使⽤wait()系统调⽤,后⾯讲没有读取到⼦进程退出的返回代码时就会产⽣僵死(⼫)进程• 僵死进程会以终⽌状态保持在进程表中并且会⼀直在等待⽗进程读取退出状态代码。• 所以只要⼦进程退出⽗进程还在运⾏但⽗进程没有读取⼦进程状态⼦进程进⼊Z状态**把子进程给杀掉后就只打印父进程的代码了可以看到ps命令子进程状态变为了Z,defunct意思为已故的,只要当父进程收到了子进程的提出代码就会从Z-X僵尸状态可能引起内存泄漏当你的父进程不是bash也就是系统时,如果你的程序是常运行的,你如果结束掉子进程而没有给父进程退出码删掉子进程的PCB的话就会导致这部分的无用的PCB占用内存久而久之严重的话就会使整个系统崩溃,所以一定要小心,怎么给退出代码下篇文章会讲!!!孤儿进程如果子进程的父进程被杀死后,这个子进程就是孤儿进程,它会被操作系统管理,你再杀掉子进程系统会帮你回收这里不会发生内存泄漏

相关新闻

2026/8/30 15:19:59

手写最小ReAct Agent:AI Agent开发从原理到工程落地

最近在调研 Agent 生产落地的过程中,正好赶上 AGNTCon 阿姆斯特丹九月阵容公布的消息。近几年 Agent 相关的技术会议越来越多,讨论焦点也从“怎么做一个能聊天的 Demo”逐渐转向“怎么让 Agent 在线上稳定跑起来”。这篇文章不打算做新闻搬运&#xff0c…

2026/8/30 15:19:59

基于springboot小说在线阅读平台毕业设计项目源码

联系博主 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 …

2026/8/30 15:30:00

x64dbg逆向实战:从反汇编指令还原C语言代码的方法论

如果你已经在 Windows 环境下做过反汇编分析,大概率会遇到这种场景:用 IDA 打开某个可执行文件,静态分析时看到了一堆 push、mov、cmp、jle 和 call,然后把寄存器翻来翻去,依然无法确认这段汇编对应源码里的哪一行 C 代…

2026/8/30 15:30:00

传统搜索获客失效,拓氪科技如何用AI重构获客逻辑?

企业获客行业正迎来一场底层逻辑的颠覆性变革,其变革体量堪比传统线下会销全面转向搜索引擎竞价的时代级迭代。十余年前,国内企业完成了首轮获客数字化迁徙,将核心营销预算从线下户外广告、线下展会地推,转移至搜索引擎关键词竞价…

2026/8/30 15:30:00

从零实现开发者贡献识别系统:多维事件模型与代码实战

开发团队在衡量成员贡献时,通常会把“代码提交量”“PR 数量”“解决 Issue 数”当作最直观的数据。但在实际业务迭代中,这种单一维度的评估方式常常引发争议:有人写了很多代码但大部分在返工,有人一直在帮助团队做 Code Review 却…

2026/8/30 15:30:00

【 Kafka进阶5】使用 Docker 部署 Apache Kafka 集群完全指南

从单节点快速尝鲜到生产级隔离模式集群,一文打通容器化 Kafka 部署全链路。 文章目录 1. Docker 部署 Kafka2. Docker 镜像概览拉取镜像 3. 准备工作3.1 Docker 版本要求3.2 KRaft 模式简介3.3 核心配置参数速查 4. 三种配置输入方式4.1 默认配置(开箱即…

2026/8/30 15:30:00

热带水果制航空燃料:从加氢工艺到量产落地的关键链路

热带水果做喷气燃料,还拿到30亿美元级别的资金支持。这类新闻第一眼确实抓人,但如果你只盯着“30亿美元”看,很容易错过真正重要的东西。这个项目本质上是可持续航空燃料(SAF)赛道里的一次原料创新:用热带油…

2026/8/30 0:03:35

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/30 0:03:35

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/30 0:03:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/8/30 0:03:35

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/30 0:03:35

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/30 0:03:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/8/28 16:16:48

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/28 16:16:50

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/28 11:06:45

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…