Linux编程3.3 进程-进程的终止
1、正常终止
- 从main函数返回
- 调用exit(标准C库函数)
- 调用_exti或_Exit(系统调用)
- 最后一个线程从其启动例程返回
- 最后一个线程调用 pthread exit
2、异常终止
- 调用abort
- 接受到一个信号并终止
- 最后一个线程对取消请求做处理响应
3、进程返回
- 通常程序运行成功返回0,否则返回非0
- 在shll中可以查看进程返回值(echo $?)
4、atexit函数
#include<stdlib.h>
int atexit(void (*function)(void));
返回:成功返回0,出错返回-1
功能:向内核登记终止函数
- 每个启动的进程都默认登记了一个标准的终止函数
- 终止函数在进程终止时释放进程所占用的一些资源
- 登记的多个终止函数执行顺序是以栈的方式执行,先登记的后执行。
示例:
5、进程终止方式区别
| return | exit() | _exit()/Exit() | |
| 是否刷新标准I/O缓存 | 是 | 是 | 否 |
| 是否自动调用终止函数 | 是 | 是 | 否 |
6、进程启动和退出
7、查看系统中的进程
7.1、ps指令
通常可以查看到:进程的ID、进程的用户ID、进程状态和进程的Command
示例:
ps -ef
ps -aux|more 查看进程资源占用情况
7.2、ps输出的信息
- USER 进程的属主;
- PID 进程的ID;
- PPID 父进程的ID;
- %CPU 进程占用的CPU百分比;
- %MEM 占用内存的百分比;
- NI 进程的NICE值,数值大,表示较少占用CPU时间;
- VSZ 进程虚拟大小;
- RSS 驻留中页的数量;
- TTY 终端ID;
- WCHAN 正在等待的进程资源;
- START 启动进程的时间;
- TIME 进程消耗CPU的时间;
- COMMAND 命令的名称和参数;
7.3、进程状态
进程常见状态:
- 运行状态
- 系统当前进程
- 就绪状态进程
- ps命令的STAT列为值R
- 等待状态
- 等待事件性
- 等待系统资源
- ps命令的STAT列为值S
- 停止状态
- ps命令的STAT列为值T
- 僵尸状态
- 进程终止或结束
- 在进程表项中仍有记录
- ps命令的STAT列为值Z
8、进程调度
8.1、操作步骤
- 第一步:处理内核中的工作
- 第二步:处理当前进程
- 第三步:选择进程
- 实时进程
- 普通进程
- 第四步:进程交换
8.2、task_struct中的调度信息:
- 策略
- 轮流策略
- 先进先出策略
- 优先权
- Jiffies变量
- 实时优先权
- 实时进程之间
- 计数器
8.3、进程状态变化关系
9、回收方式:
1. init进程回收 -> 僵尸进程 孤儿进程
2. wait函数回收 -> 阻塞 等待SIGCHLD信号
3. signal信号回收->当子进程结束,内核会发射SIGCHLD信号到对应的父进程中。
(signal信号:linux内核当中,有若干种信号,比如SIGINT,SIGCHLD,SIGALRM……,内核中,会产生或监听若干信号,若一个进程,监听了一个信号,则当发生该信号时,此进程会将当前进度暂停。 SIGINT->ctrl +c),

![]()
注:Sleep函数会被信号唤醒
相关文章:
Linux编程3.3 进程-进程的终止
1、正常终止 从main函数返回调用exit(标准C库函数)调用_exti或_Exit(系统调用)最后一个线程从其启动例程返回最后一个线程调用 pthread exit 2、异常终止 调用abort接受到一个信号并终止最后一个线程对取消请求做处理响应 3、进程返回 通常程序运行…...
排序(3)——直接选择排序
目录 直接选择排序 基本思想 整体思路(升序) 单趟 多趟 代码实现 特性总结 直接选择排序 基本思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的…...
[LeetBook]【学习日记】数组内重组
题目:训练计划 I 训练计划 I 教练使用整数数组 actions 记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以数组形式返回。 示例 1: 输入:act…...
【Linux】磁盘情况、挂载,df -h无法看到的卷
文章目录 解决挂载、解决挂载完重启就消失1、查看linux下的硬盘挂载的空间、使用空间2、查看没有挂载的硬盘是否检测在系统中3、挂载 (挂载完,要在/etc/fstab 下面配置挂载信息 要不然重启挂载就消失了) 解决挂载、解决挂载完重启就消失 linu…...
AIOps实践中常见的挑战:故障根因与可观测性数据的割裂
运维的挑战与责任 在数字化时代,运维团队面临的挑战前所未有。他们不仅要确保系统的高可用性和高性能,还要快速响应并解决故障,以减少对业务的影响。在这种背景下,运维团队急需工具和技术,能够帮助他们提高效率&#…...
python 远程代码第一次推送
conda windows 环境 conda 安装后 配置环境变量 运行 conda init; conda active base 创建虚拟环境 conda create -n my_venv python3.9.5 虚拟环境应用 file-->New project --> Existing interpreter ... -->Virtualenv environment-->interpreter ...--&g…...
C++开发基础之简单的计时器也有适配场景
一、前言 计时器的开发通常涉及到计算时间间隔的方法和计算时间的方式。一般计时器的开发步骤: 获取起始时间点:在开始计时时,记录当前的时间戳作为起始时间点。 获取结束时间点:在结束计时时,记录当前的时间戳作为结…...
数电学习笔记——逻辑函数及其描述方法
目录 一、逻辑函数 二、逻辑函数的描述方法 1、逻辑真值表 2、逻辑函数式 3、逻辑图 4、波形图 三、逻辑函数的两种标准形式 1、最小项与最大项 最小项 最小项的性质 最大项 最大项的性质 2、最大项与最小项的关系 3、逻辑函数的最小项之和形式 4、逻辑函数的最…...
2024年护眼台灯哪家品牌好?五款优质品牌专业推荐
护眼台灯几乎是每个孩子书桌上都会有的灯具,但还是有不少家长觉得是“智商税”。其实护眼台灯好处非常多,列如能够提供舒适的照明,缓解用眼疲劳,预防近视等等。所以今天准备了一期护眼台灯测评,并附上护眼台灯的榜单&a…...
搜索iconfont或者阿里图标就可以得到免费的图标
你在搜索过程中就会出现一些无耻,不要脸的网站,比如说下面这个 这个才是阿里图标 看它的网址 都是免费的...
android实战视频教程,细数Android开发者的艰辛历程
缘起 随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有应用之间的互相调用等等问题,插件化技术应用而生。如果没有插件化技术,美…...
nav2_gps_waypoint_follower_demo 不能在ros2 humble中直接使用的解决方法
GIT上的nav2_gps_waypoint_follower_demo是基于ros-iron编写的,其中followGpsWaypoints(wps) service只能在Iron上使用。 解决方法: 第一步:将interactive_waypoint_follower.py修改为如下代码: import rclpy from rclpy.node …...
华为OD机试 - 螺旋数字矩阵
1 题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数 n (0 < n ≤ 999)和行数 m(0 < m ≤ 999),从左上角的 1 开始&…...
Vue响应式内容丢失处理
对数组和对象进行不当的修改会使Vue的对象丢失响应式,这时可以直接console.log丢失的对象,看是否有getter和setter 对于数组和对象,只有使用 Vue 提供的一些方法(如 push()、pop()、splice()、set() 等)进行修改才会触…...
Linux安装Rabbitmq
说明:本文章主要是rabbitmq在Linux系统上的安装,文章中包含了rabbitmq的下载及依赖下载 1.版本选取,这里的选取主要是版本的兼容问题 去这个网址查看mq和erlang版本兼容:RabbitMQ Erlang Version Requirements | RabbitMQ 2.相…...
在nginx 服务器部署vue项目
以人人快速开发的开源项目:renren-fast-vue 为例 注:这里开始认为各位都会使用nginx 打包vue项目 npm run build 测试打包的项目是否可以运行 serve dist 可以正常运行 编译报错请移步到:renren-fast-vue1.2.2 项目编译报错: build g…...
制作一个简单的HTML个人网页
制作一个简单的HTML个人网页 1.1 硬件1.1.1 一台电脑1.1.2 配置要求 1.2 系统1.3 软件 二、制作一个简单的HTML个人网页1.创建一个HTML网页1.1 新建文本文档1.2 另存文本文档1.3 命名为index.html 2.编写HTML代码2.1 打开HTML2.2 复制HTML代码2.3 粘贴HTML代码2.4 保存HTML 3.预…...
HM2019创建载荷工况
该案例中将介绍载荷、工况、约束的创建 步骤一:首先创建两个载荷集(Load Collector)用来存放载荷和约束 步骤二:在Analysis面板下创建约束(Analysis→constraints) 注意:Load type选择SPC表示统计过程控制(Statistical Process Control) 步…...
Effective C++ 学习笔记 条款14 在资源管理类中小心copying行为
条款13导入这样的观念:“资源取得时机便是初始化时机”(Resource Acquisition Is Initialization,RAII),并以此作为“资源管理类”的脊柱,也描述了auto_ptr和tr1::shared_ptr如何将这个观念表现在heap-base…...
c++数据结构算法复习基础-- 3 --线性表-单向链表-笔试面试常见问题
1、单链表逆序 思路图 代码实现 //著: 链表结构里记得加 friend void ReverseLink(Clink& link); void ReverseLink(Clink& link) {Node* p link.head_->next_;while( p nullptr){return;}Node* q p->next_;link.head_->next_ nullptr;while(p ! nullpt…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
深度解析:etcd 在 Milvus 向量数据库中的关键作用
目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...
