Linux下进程的退出

Linux进程——进程退出 线程。 阅读详情

注意,本文说的是整个进程(一个进程可能包含多个线程)的退出。

一个进程的退出,有可能是由进程自己的用户态代码主动退出的,也可能是由内核通过信号处理机制(如SIGKILL、SIGABRT)强制执行的。

一、用户态主动退出

有如下多种途径,

直接main函数返回,

调用exit

调用_exit

调用exit_group

上面几种情况,

前两者等价(All functions registered with atexit(3) and on_exit(3) are called. All open stdio(3) streams are flushed and closed.),

后两者等价(Does not call any functions registered with atexit(3) or on_exit(3).  Open stdio(3) streams are not flushed.)。


二、从内核态退出

程序因为异常,或者因为管理措施要被结束时,会收到相应的信号(如SIGKILL等),然后内核在信号处理过程中,就会将进程结束掉。



无论是哪种情况,最终都是殊途同归的走到内核态的do_group_exit函数中,进程退出的全部工作(从OS的角度),都是由此函数完成的。

未完......

【Linux】进程控制(进程退出和进程等待) 文章目录一、进程退出1. 进程退出场景2. 查看每个退出码所传递的信息3. 终止进程二、进程等待1. wait2. waitpid3. status参数4. options参数三、进程的程序替换1. execl进程替换 一、进程退出 main函数return0是为什么? main函数返回的是进程的退出码 输出最近一次进程的退出码 echo $? 1. 进程退出场景 代码运行完毕,结果正确 ——————,结果不正确 代码异常终止(程序崩溃) 2. 查看每个退出码所传递的信息 strerr 阅读详情

相关推荐

进程退出控制exit

在linux下通过C语言代码来描述进程退出exit、_exit、return之间的区别

【LINUX】退出码和文件

Linux 下进程的退出包括了正常退出和异常退出,正常退出包括了 A) main() 函数中通过 return 返回;B) 调用 exit() 或者 _exit() 退出。异常退出包括了 A) abort() 函数;B) 收到了信号退出。man 2 waitWIFEXITED 正常退出的状态WEXITSTATUS 正常获取退出码。

qq_53830608的博客 1067

使用海康机器人的SDK进行DWS开发时如何筛选不同类型的相机

使用MVIDCodeReader、MvCodeReaderSDK、MvVolMeasureSDK联合开发时,通常会做一些设备枚举列表,但是不同类型的设备需要枚举在不同的列表中,便于软件使用者配置参数,例如: 如何保证枚举出来的设备是可以选择的对应的设备。我们通常枚举出来的是这样的: 解决办法 在联合开发中,我们发现,只有MvVolMeasureSDK的枚举设备接口EnumStereoCamEx可以正确的只枚举出网络内的体积设备,其余的MVIDCodeReader、MvCodeReaderS

qq_29123967的博客 2733

Linux中进程的退出

Linux进程退出

weixin_61701822的博客 4470

Gamit10.71添加新的天线类型

添加新的天线类型需要涉及到四个文件:antmod.dat,rcvant.dat,guess_rcvant.dat,hi.dat。 注意:格式要一致!!! 举例说明,我要添加一个JCA229的天线(带JCAD天线罩),对应接收机使用的是南方的South Net-S9。

Penny的博客 2713

Qt跨平台CAN通信实战:Vector、PCAN与周立功设备统一接口设计

本文针对Qt开发中常见的多品牌CAN设备兼容难题,提出了一套统一的跨平台CAN通信接口设计方案。通过抽象层封装,实现了对Vector、PCAN和周立功设备的统一操作,上层业务代码无需修改即可在不同硬件间切换,有效解决了驱动API差异、环境配置复杂和维护成本高等痛点,显著提升了代码复用率和开发效率。

weixin_29161785的博客 333

【Linux学习】深入探索进程等待与进程退出码和退出信号

【Linux学习】深入探索进程等待与进程退出码和退出信号

2301_77509762的博客 5221

遥感图像处理实战:DOTA数据集旋转框转YOLO格式全流程解析(附代码)

本文详细解析了将DOTA遥感数据集的旋转框标注转换为YOLO格式的全流程。针对遥感图像中物体朝向任意性的特点,文章重点阐述了将旋转框转换为外接水平框的数学原理与代码实现,并提供了批量转换脚本和可视化验证方法,帮助开发者高效处理数据,为基于YOLO的遥感目标检测项目奠定基础。

weixin_29082143的博客 398

Linux进程被信号杀死后退出状态码(exit code)的分析

https://blog.youkuaiyun.com/halfclear/article/details/72783900

二进制模----细微行动改变影响世界 4120

SAP资产模块(FI-AA)与总账(FI-GL)数据不一致是财务顾问和会计人员最常遇到的棘手问题之一

SAP资产模块(FI-AA)与总账(FI-GL)数据不一致问题主要源于四大原因:1)违规手工记账(最常见),直接通过总账录入资产科目凭证而未通过资产模块;2)折旧运行问题,包括执行失败、跨年度问题或配置冲突;3)主数据与配置错误,如科目确定或折旧键设置不当;4)业务流程遗漏,如单据未生成凭证或汇率差异。解决方案包括运行对账报表、检查凭证来源、补跑折旧及核对配置。关键预防措施是坚持"资产模块发起→自动生成凭证→总账审核"的标准流程。

金牌架构师 428

eNSP常见故障处理

eNSP无法启动设备一直停在#井号的问题的解决方案?

lvshiliang123的博客 2万+

Linux 进程(八) 进程的退出码

函数也是有返回值的。而_exit是系统调用接口,exit是c语言提供的库函数,库函数是不能终止进程的,只有操作系统提供的系统调用才能够终止进程,那么他们的关系就比较明确了。他们两个的功能是一模一样的,exit是c语言给我们提供的接口,而_exit是linux系统给我们提供的接口,那么二者有什么区别呢?进程出现退出是进程收到了异常的信号,每个信号都有不同的编号,每个编号都有自己的异常原因。查看最近一个进程的退出状态,查看到的是0 表示的就是成功。exit是终止进程 其中status:是进程退出时候的退出码。

kqs__的博客 3283

C语言设计模式全面解析:从理论到28个实战示例

本文系统介绍了23种经典设计模式在C语言中的实现方法。通过结构体、函数指针等技巧,C语言可以优雅地模拟面向对象特性,实现代码复用与解耦。文章分类详解了创建型、结构型、行为型三大类模式,并提供了28个完整代码示例,包括单例、策略、观察者等核心模式的精简实现。这些模式在嵌入式系统、操作系统内核等场景中广泛应用,如状态机、事件驱动等。学习C语言设计模式的关键在于理解模式意图,掌握函数指针和结构体组合等技巧,并在实际项目中灵活运用。本文为C语言开发者提供了全面的设计模式参考指南。

数字人生 364

【Linux进程】进程退出

进程执行结束退出,就必然需要进行资源回收,子进程由父进程回收,而父进程(起始进程)被操作系统回收,那么当进程退出时,可能需要知道进程的执行情况,是正常执行完毕退出,还是异常退出?本文我们就来聊一聊进程的退出;

2202_75605090的博客 1711

【BUG已解决】pip install 出现 error: Microsoft Visual C++ 14.0 or greater is required 解决方案

方案磁盘占用适用场景推荐指数安装Build Tools3-6GB长期Windows Python开发⭐⭐⭐⭐⭐寻找预编译wheel无额外占用只是想快速装上某个包⭐⭐⭐⭐⭐用conda安装视包而定已经在用conda环境⭐⭐⭐⭐⭐升级到新版本无额外占用库本身有更新的预编译版本⭐⭐⭐⭐使用WSL2需要额外配置Linux子系统频繁遇到Windows编译问题⭐⭐⭐⭐的核心是Windows 缺少本地 C/C++ 编译器,而目标包需要在本机编译。先看是否有捷径。

博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【linux】进程控制——进程创建,进程退出,进程等待

一个进程创建了另一个进程,创建者为父进程,被创建者为子进程。父进程可以创建多个子进程。操作系统是一号进程,所有进程构成一颗多叉树结构。每个父进程只对直系的子进程负责。父进程创建子进程的一整套流程为:创建子进程——>子进程完成任务——>父进程回收子进程父进程先退,子进程未退。此时子进程的父亲进程被改为1号进程(操作系统),那么该子进程被称为孤儿进程父进程未退,子进程先退。但父进程没有读取到子进程的退出(进程等待),该子进程的状态被改为 Z 状态,Z 状态的进程被成为僵尸进程。

2301_79796701的博客 2708

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

linux进程退出控制

在Linux系统中,当进程退出时,必须释放它所拥有的资源,并通过某种方式告诉父进程。进程的退出一般是显示或隐式地调用了eixt(),或者接受了某种信号。不管是由于什么原因退出,最终都调用了do_exit。 进程退出的种类 Linux下进程的退出分为正常退出和异常退出两种。 正常退出 a. 在main()函数中执行return; b.调用exit()函数。 异常退出 a.调...

wangqianqianya的博客 3989

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

linux 进程退出码,Linux 进程退出码

Linux 进程退出码2018-11-04 SundayLinux 下进程的退出包括了正常退出和异常退出,正常退出包括了 A) main() 函数中通过 return 返回;B) 调用 exit() 或者 _exit() 退出。异常退出包括了 A) abort() 函数;B) 收到了信号退出。不管是哪种退出方式,系统最终都会执行内核中的同一代码,并将进程的退出方式以返回码的方式保存下来。简介当进程...

weixin_42497828的博客 2167

Linux 进程退出和进程控制

进程退出大致可以分为三种情况代码运行完毕,结果正确代码运行完毕,结果不正确代码异常终止像我们日常c语言的return 0就属于代码运行完毕 结果正确如果返回的是其他值 那么可能就是代码运行完毕,结果不正确exit _exit 和 return的区别return 在函数内 return后程序继续进行但是exit和_exit在程序结束后就停止进行了exit():是标准库函数(属于 C 标准库),声明在 <stdlib.h> 中。

Starry_tsx的博客 1079

【Linux】进程的控制①之进程创建与进程退出

enum{open_err,malloc_err可以这样来使用:defult :那么当我们要使用的时候直接调用这个接口就好。结论:mian函数return返回时,表示进程已经退出,return后跟的数字是进程退出码,可以自行设置退出码的字符串意义。

m0_71503225的博客 1987

【Linux】进程控制1——进程创建和进程退出

在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。fork之前父进程独立执行,fork之后,父子两个执行流分别执行。注意,fork之后,谁先执行完全由调度器决定。1.将父进程的所有都到了子进程中。(若子进程不对父进程的数据进行修改的话,父子进程的数据也是共享的。若子进程对父进程的数据进行修改时,会发生写时拷贝,将父进程的数据进行一份到子进程中)写时拷贝 :(是一种延时申请技术,可以提高整机内存的使用率)2.

2301_80224556的博客 1320

linux下进程退出哪些回归收,linux进程退出控制

在Linux系统中,当进程退出时,必须释放它所拥有的资源,并通过某种方式告诉父进程。进程的退出一般是显示或隐式地调用了eixt(),或者接受了某种信号。不管是由于什么原因退出,最终都调用了do_exit。进程退出的种类Linux下进程的退出分为正常退出和异常退出两种。正常退出a. 在main()函数中执行return;b.调用exit()函数。异常退出a.调用abort函数;b.进程收到某个信号,...

weixin_42349005的博客 426

Linux 退出进程和销毁进程

退出进程 当一个进程执行结束后必须要退出,退出时内核会进行一系列的相应操作。在 Linux 中,共有 8 种进程的退出方法,其中包括 5 种正常的方法和 3 种异常的方法。 通常来说 Linux 的应用代码会调用 exit 系列函数来退出一个进程,对其标准调用格式说明如下: #include<stdlib.h> #include<unist.h> void exit(int...

hello呀! 1640

linux进程总结——进程退出

文章目录进程终止退出进程退出方法_eixt(int status)exit(int status)接受进程退出信息(进程等待)进程的status 进程终止退出 一个进程退出的状态场景一般会是: 程序运行结束,返回一个结果。 (尽管这个结构可能是正确的,也可能是错误的。但是这个结果是我们预期之内的。) 程序运行异常结束。(程序没有运行到结束就退出了。) 进程退出方法 类似的:一般我们在写代码时,都会使通过return在一个函数执行结束时,返回一个我们需要的数据。这就是退出程序的方法。 在结束一

sy1227081317的博客 657

Linux——进程的退出、等待与替换

进程退出:介绍三种退出场景(正常/错误/异常),分析_exit和exit函数的区别(后者会刷新缓冲区),并通过测试验证差异。 进程等待:阐述父进程等待子进程的必要性(避免僵尸进程和内存泄漏),对比wait/waitpid函数的使用,详解status参数如何通过位图存储退出码和信号,并区分阻塞与非阻塞等待(WNOHANG选项)。 进程替换:解析exec函数族原理(覆盖原进程代码但不创建新进程),列举6种替换函数(如execl、execvp等),说明其命名规则和参数差异(路径、参数传递方式、环境变量处理),强调

二哈的博客 995

探索Linux中的进程控制:从启动到退出的背后原理

linux进程控制

A.的博客 2701
上一篇: Linux中断处理杂记
下一篇: C语言与ELF机器语言之间的关系
无忧老猪
博客等级 码龄18年 200粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值