【Linux系统编程】六、进程终止

Ⅰ. 了解退出码

一、什么是退出码

main 函数中,为什么总是 return 0?如果我们 return 其他值可以吗 ❓

答案是可以的!main 函数的返回值被称为进程退出码,表示进程退出后是否成功。通常,退出码为 0 表示成功,非 0 值则表示其他含义。如果程序不需要关心退出码,可以直接 return 0。然而,如果程序需要关注退出码,建议返回特定的值以表明特定的错误信息。

值得注意的是,退出码只记录最近一个进程在命令行中执行完毕时的退出码。

立即进入“豆包AI人工智官网入口”;

立即学习“豆包AI人工智能在线问答入口”;

二、如何查看退出码

main 函数 return 的值是返回给系统的,用于判断进程执行的结果。要查看退出码,可以使用环境变量 ? 并结合 echo 命令打印,例如 echo $?

假设我们编写一个程序,最后 return 250,结果如下:

【Linux系统编程】六、进程终止

可以看到结果是 250。但在第二次和第三次调用 echo $? 时,退出码变为 0,这是因为 echo 命令本身会创建一个子进程,其退出码会覆盖前一个进程的退出码。

三、如何查看错误信息

在 C 语言中,我们可以使用 strerror() 函数来打印错误信息,它有大约 134 种错误标识。函数声明如下:

#include char* strerror(int errnum);

下面是一个程序,调用 strerror() 来查看错误信息:

#include #include int main(){    for(int i = 0; i < 134; i++)        printf("%d: %sn", i, strerror(i));    return 0;}

在命令行故意输入错误指令,可以看到对应的错误信息:

【Linux系统编程】六、进程终止

Ⅱ. 进程退出的情况

进程退出可能出现以下三种情况:

代码运行完毕,结果正确,退出码为 0。代码运行完毕,程序未崩溃,但因逻辑问题结果不正确,退出码为非 0。代码未运行完毕,程序非正常结束(如野指针、越界等操作,包括人为 ctrl+c 或除 0 错误),此时退出码没有意义。

一般来说,退出码在第二种情况下起作用。

Ⅲ. 进程常见的退出方法

一、正常退出

在主函数中 return(注意非主函数中 return 只是返回值,不是退出程序),调用用户级别函数 exit(),或调用系统级别函数 _exit()。后两种方法将在下面详细讲解。

二、异常退出

例如 ctrl + c,进程通过接收到信号而终止。

三、exit() 与 _exit()

① exit()

在 C/C++ 中常见的 exit() 函数用于进程不正确结果的退出,即使在非主函数中也能直接退出进程。函数声明如下:

#include void exit(int status);

status 是退出码,主要与进程等待部分相关。当 exit(-1) 时,结果如下:

[liren@VM-8-2-centos process]$ makegcc -o mypro proc.c -std=c99[liren@VM-8-2-centos process]$ ./mypro[liren@VM-8-2-centos process]$ echo $?255

② exit() 与 _exit() 的区别

_exit() 是系统提供的接口,函数声明如下:

#include void _exit(int status);

exit() 实际上调用 _exit(),但会额外执行一些工作,如执行用户通过 atexit()on_exit() 定义的清理函数,关闭所有打开的流,并将所有缓存数据写入。总结它们的区别如下:

exit() 在退出时会进行后续资源处理,包括刷新缓冲区。_exit() 在退出时不会进行后续资源处理,直接终止进程。

下面是一个展示它们区别的代码:

#include #include #include int main(){    printf("running ...");    sleep(3);
// 比较两者的区别exit(1);// _exit(1);printf("done ...");return 0;

}

【Linux系统编程】六、进程终止

四、如果 main 函数里都不写 return 和 exit,退出码是啥 ❓

理论上,退出码是未定义的、随机的,但实际上得到的退出码是 0,因为 main 函数会调用其他函数,成功后,遗留的历史数据会充当返回值。

#include int main(){printf("hello world");}运行结果:[liren@VM-8-2-centos process]$ ./myprohello world[liren@VM-8-2-centos process]$ echo $?0

main 函数里什么也不做,退出码依旧是 0,不必太纠结,这个本就是标准未定义的。

以上就是【Linux系统编程】六、进程终止的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/73448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月13日 22:05:35
下一篇 2025年11月13日 22:21:51

相关推荐

  • 币圈零基础解释:通证和Token有何不同?通证经济模型帮你读懂项目潜力?

    通证和token其实指的是同一个东西,没有本质区别。简单说,token是英文原词,而“通证”是它更准确的中文翻译。理解这一点,是看懂币圈项目的第一步。 Binance币安 欧易OKX ️ Huobi火币️ 通证(Token)到底是什么? 很多人刚接触时,以为Token就是一种新的电子货币,比如比特币…

    2025年12月9日
    000
  • 币圈术语解析:Token是什么?Token与币的区别帮你辨别投资真假?

    在币圈里,搞清楚token和coin的区别是避免踩坑的第一步。很多人以为所有加密货币都一样,但它们的技术基础和风险完全不同,理解这点能帮你识别项目真伪。 Binance币安 欧易OKX ️ Huobi火币️ Token(代币)到底是什么? Token不是独立的货币,它更像是一种“数字权益凭证”,本身…

    2025年12月9日
    000
  • 币圈趋势速成:2025通证热潮?通证基础知识教你跟上Web3叙事?

    2025年想看懂币圈的通证热潮,核心是理解web3里“所有权”的转移。这不只是炒币,而是整个互联网价值逻辑的改变。关键在于,你不再只是平台的用户,而是生态的参与者和所有者。 Binance币安 欧易OKX ️ Huobi火币️ 通证到底是什么?不只是虚拟货币 很多人把通证(Token)等同于比特币、…

    2025年12月9日
    000
  • 什么是空投(Airdrop)?2024年空投猎人实战教程

    空投(airdrop)是加密货币项目方为提升知名度、激励早期用户或实现社区去中心化治理,而向特定用户存储地址免费分发其原生代币的一种营销策略。对于参与者而言,这是一种低成本甚至零成本获取新兴数字资产的机会,被许多人视为探索web3世界并赚取“第一桶金”的重要途径。 空投的核心准备工作 1、准备一个独…

    2025年12月9日
    000
  • Cosmos生态全景图:详解ATOM 2.0、跨链协议与核心项目

    cosmos被誉为“区块链的互联网”,其宏大愿景是构建一个由主权独立的区块链组成的去中心化网络。通过其独特的跨链通信协议ibc,cosmos生态系统实现了前所未有的互操作性。 ATOM 2.0 的核心变革 1、引入了链间安全(Interchain Security)机制,允许新项目共享Cosmos …

    2025年12月9日
    000
  • RWA赛道全解析:为什么说它是连接传统金融与加密世界的万亿级桥梁?

    rwa,即真实世界资产,是将房地产、债券等实体资产代币化后引入区块链的革命性赛道。它正成为连接传统金融与加密经济的关键枢纽,为两个世界搭建起一座潜力巨大的万亿级桥梁,释放前所未有的流动性。 RWA的核心内涵与运作模式 1、RWA的核心思想在于,将具有稳定现金流的现实世界资产,通过法律和技术手段转化为…

    2025年12月9日
    000
  • 币安app官方下载2025最新版 币安安卓版v7.3.31官方安装入口

    币安app官方下载2025最新版 币安安卓版v7.3.31官方安装入口 币安binance交易所 是全球领先的数字资产综合交易平台,支持包括 btc、eth、bnb、usdt 等上百种主流币种的现货与衍生品交易。平台以安全、流动性强和多维度金融生态著称,涵盖交易、理财、nft、web3等多领域服务。…

    2025年12月9日
    000
  • 币安交易平台官网入口 币安官方正版入口及使用指南

    币安交易平台官网入口 币安官方正版入口及使用指南 币安binance交易所 是全球领先的数字资产综合平台,提供包括 btc、eth、bnb、usdt 在内的多种主流币种现货、合约、理财等一体化交易服务。凭借高性能撮合系统、严格的安全风控及丰富的生态布局,币安已成为全球用户信赖的交易平台。本文将提供 …

    2025年12月9日
    000
  • 币安Binance交易所登录最新地址 币安官网页面访问入口

    币安Binance交易所登录最新地址 币安官网页面访问入口 币安binance交易所 是目前全球交易量最大的数字资产综合平台之一,支持 btc、eth、bnb、usdt 等上百种主流币种。平台凭借强大的撮合引擎、安全的账户体系以及完善的生态系统,服务覆盖超过180个国家和地区。本文将为您提供 币安交…

    2025年12月9日
    000
  • 虚拟货币中的永续合约是什么?与杠杆有什么区别?

    在虚拟货币交易中,永续合约是一种没有到期日的衍生品合约,允许交易者在不实际持有现货的情况下参与市场价格波动。它与传统期货最大的区别在于没有交割日期,可以长期持仓,同时通过资金费率机制保持合约价格与现货价格接近。 永续合约与杠杆的区别 虽然永续合约常常与杠杆交易结合使用,但二者有本质区别: 永续合约:…

    2025年12月9日
    000
  • 什么是稳定币?币圈常见稳定币盘点及购买渠道推荐

    稳定币是一类价值相对稳定的加密货币,通常锚定法币或其他资产,以降低价格波动风险。它们在币圈中广泛应用于支付、交易结算及去中心化金融(DeFi)中,是加密资产市场的重要组成部分。 稳定币的运作原理 稳定币主要通过以下机制维持价格稳定: 法币抵押:以美元、欧元等法币作为储备资产支持,例如 USDT、US…

    2025年12月9日
    000
  • 市场下跌,AI代币领跌6%,比特币跌破10.4万美元

    近期加密市场出现下跌行情,AI代币板块领跌约6%,比特币(BTC)价格一度跌破 10.4万美元。市场整体情绪偏谨慎,投资者需关注资金流向及短期波动风险。 市场表现分析 分析显示,AI相关代币受技术热度降温及市场资金回流影响出现大幅回调,而比特币作为市场风向标,其跌破关键心理价位可能带动整体市场承压。…

    2025年12月9日
    000
  • Kingnet AI迁移至BNB Chain,全新V3版本即将上线

    Kingnet AI 官方近日宣布,其生态系统将迁移至 BNB Chain,并即将上线全新 V3 版本。此次升级旨在提升平台性能、交易速度及用户体验,同时为开发者提供更丰富的智能合约和应用支持。 迁移至 BNB Chain 的意义 此次迁移带来的主要优势包括: 更高交易吞吐量:BNB Chain 提…

    2025年12月9日
    000
  • 什么是稳定币?稳定币如何运作及获取方法指南

    稳定币是一种锚定法币或其他资产价值的数字货币,旨在减少价格波动,为交易、支付和去中心化金融(DeFi)提供稳定的价值媒介。本文将详细介绍稳定币的运作机制及获取方法,帮助投资者快速理解并参与。 稳定币的运作机制 稳定币通常通过以下方式保持价格稳定: 法币抵押型:稳定币由银行存款或法币储备支持,确保 1…

    2025年12月9日
    000
  • 即将上线的Play Solana(PLAY)币是什么?有什么价值?如何获取?

    即将上线的 PLAY 代币是 Play Solana 生态系统的核心通证,它计划深度整合硬件、游戏、软件与链上身份经济。本文将为您详细解析 PLAY 的价值主张、功能用途以及如何获取。 什么是 PLAY? Play Solana 是在 SOL 公链上构建的 “SuperHUB” 平台,将游戏主机、N…

    2025年12月9日
    000
  • 币安Alpha将上线Janction(JCT),一阶段空投门槛235分

    Binance币安 欧易OKX ️ Huobi火币️ Janction(JCT)空投信息 2025年11月10日,官方宣布Binance Alpha将首次上线Janction(JCT),Alpha交易通道将于北京时间2025年11月10日18:00正式开启。 满足条件的用户可在交易开放后,前往币安A…

    2025年12月9日
    000
  • Celestia (TIA) 全解析:模块化区块链如何重塑加密世界

    celestia (tia) 作为一个创新的模块化区块链,正引领加密世界的深刻变革。它通过解耦核心功能,专注于数据可用性,为开发者提供前所未有的灵活性与可扩展性,开启了应用新纪元。 什么是模块化区块链? 1、传统的“单体式”区块链,如比特币和以太坊,将共识、数据可用性、执行和结算四大功能集于一身,这…

    2025年12月9日
    000
  • FET币 (Fetch.ai) 深度剖析:AI+Crypto赛道的领跑者

    fetch.ai (fet) 是一个前沿的人工智能实验室,致力于构建一个去中心化的机器学习网络。其原生代币fet作为生态系统的核心,旨在无缝连接需要ai服务的用户和能够提供ai能力的设备,是ai与加密货币结合赛道的杰出代表。 核心技术与自主经济代理 (AEA) 1、Fetch.ai的核心技术是其自主…

    2025年12月9日
    000
  • Starknet (STRK) 技术详解:ZK-Rollup如何引领以太坊扩容?

    starknet是基于zk-rollup技术的领先以太坊二层扩容方案,它通过将大量交易在链下处理并生成一个加密证明,极大地提升了以太坊网络的可扩展性并降低了成本,引领着区块链扩容的未来。 ZK-Rollup的核心工作机制 1、链下计算与打包:Starknet网络在以太坊主网之外执行成千上万笔交易。这…

    2025年12月9日
    000
  • 网格交易是什么?开越多越好吗?网格交易的优缺点,操作技巧与策略教学

    在变幻莫测的金融市场,尤其是在波动性较大的加密货币市场中,许多投资人常常因为情绪波动而做出错误决策,而陷入「追高杀低」的困境。而网格交易可以有效解决这个问题。 Binance币安 欧易OKX ️ Huobi火币️ 网格交易是一种量化交易策略,它利用网格交易机器人,在预设的价格区间内,自动且有纪律地执…

    2025年12月9日 好文分享
    000

发表回复

登录后才能评论
关注微信