Linux——进程退出

2023-11-10

目录

一.进程退出时有三种选择:

1.1 echo $?命令:

        功能: 打印距离现在最近一次执行某进程的退出码

例2代码:

例3:

例4代码:

1.3 进程运行过程中可能会出现的错误种类:

二.总结:


一.进程退出时有三种选择:

1.使用return ; 语句

2.使用 exit();   函数

3.使用运行才会导致的错误语句,例如:段错误,除零错误

1.1 echo $?命令:

        功能: 打印距离现在最近一次执行某进程的退出码

        echo指令功能是打印,$?表示可执行程序退出码。

如果说把进程比作一个人(病人和正常人)的话,那么进程退出码就可以看做是病人的症状!症状的轻重缓急代表了进程运行的结果不同。

举个例子: VS编译器中写的一段C代码:

#include<stdio.h>

int AddSum(int first, int to) {
	int sum = 0;
	for (int i = first; i <= to; ++i) {
		sum += i;
	}
	return sum;
}

int main() {
	int ret = AddSum(0, 100);
	printf("ret:%d\n", ret);
	return 0;
}

        代码解析:本段代码是通过调用一个函数去计算从0到100的相加运算。

        由运行结果框可知,结果为5050,退出码为0,表明程序运行正确。   

例2代码:

        代码解析:本段代码是通过调用一个函数去计算从0到100的相加运算,该程序运行过程无异常,结果也对,那么退出码应当为0。 

编译运行后 :

 

使用echo $?指令查看该可执行程序的退出码,核实为0。

例3:

本段代码的解析:用户想计算0-100的总和,但是上面函数的for循环中,i<100,所以计算出来的值是0-99的总和值,代码成功运行但结果不正确,退出码为 !0(非0)。

 

例4代码:

代码解析:在计算0-100的总和时,AddSum函数中出现了除零计算,那么在运行的过程中会出现除零错误,导致程序异常终止。 

编译运行: 

 运行程序时,输出Floating point exception,且查看退出码时,为136。

1.3 进程运行过程中可能会出现的错误种类:

        以上为导致进程运行出错的64种信号,每个信号都代表着导致进程再运行过程种提前终止的一种方式 。

我们上面导致进程进程终止的就是除零错误——SIGFPE信号(浮点运算错误)


二.总结:

进程退出有三种场景:

1.进程成功运行,所得结果也正确,退出码为0

2.进程成功运行,所得结果不正确,退出码为!0

3.进程运行过程中出现异常,结果无意义,退出码也无意义。 

        前两种方式return /exit() 可以随意设置退出码的值,即可用return 后面的数值、exit()的实参去设置退出码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux——进程退出 的相关文章

  • 完整的 C++ i18n gettext()“hello world”示例

    我正在寻找完整的 i18ngettext 你好世界的例子 我已经开始了一个基于的脚本使用 GNU gettext 的本机语言支持教程 https web archive org web 20130330233819 http oriya s
  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • 如何使用 go1.6.2 构建 linux 32 位

    有没有任何组合GOARCH and GOOS我可以设置哪些值来构建 ELF 32 位二进制文 件 GOOS linux and GOARCH 386 更多示例 架构 32 bit gt GOARCH 386 64 bit gt GOARCH
  • 用于获取特定用户 ID 和进程数的 Bash 脚本

    我需要 bash 脚本来计算特定用户或所有用户的进程 我们可以输入 0 1 或更多参数 例如 myScript sh root deamon 应该像这样执行 root 92 deamon 8 2 users has total proces
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • 如何从程序内部获取指向程序的特定可执行文件部分的指针? (也许是诽谤)

    我在 Linux 环境中 需要编写一个程序来检索放置在其可执行文件的某个部分中的一些数据 那么 如何从程序内部获取指向程序某个部分 通过其名称 的指针呢 我知道可以使用elf getdata 将节的索引作为参数传递给 get 和Elf Da
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • 打印本周星期一的日期(在 bash 中)

    我想获取本周星期一的 YYYYMMdd 格式的日期 例如 今天是 20110627 从明天到周日 我仍然想打印周一 今天 的日期 然后下周重复这个过程 monday date dmonday Y m d last monday date d
  • 为什么使用signalfd无法捕获SIGSEGV?

    我的系统是ubuntu 12 04 我将示例修改为man 2 signalfd 并添加sigaddset mask SIGSEGV 在示例中 但我无法得到输出SIGSEGV被生成 这是一个错误吗glibc 源代码片段如下 sigemptys
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • 在 MacOS 上构建需要 net461 的 dotnet SDK 项目的最简单方法

    我有一个 dotnet SDK sln and a build proj with
  • 如何在 Ubuntu/Linux 发行版中安装 Tesseract-OCR 3.03?

    我和一个朋友有兴趣为 CV 项目训练 tesseract OCR 引擎 我们尝试使用一些包装器 例如 PyTesser 和 pyocr 但结果目前不如我们需要的那么准确 因此 我们希望尝试训练超立方体以更好地实现我们的目的 即识别食品标签上
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • Linux 上的“软/硬 nofile”是什么意思

    当我尝试在RedHat EL5上安装软件时 我得到了错误 软 硬nofile的期望值是4096 而默认值是1024 我设法增加了这个数字 但我不知道参数是什么 他们指的是软链接和硬链接吗 我改变的方法是 a 修改 etc security
  • 使用 Vala 和 GLib 的正则表达式

    有没有一个函数 比如http php net manual en function preg match all php http php net manual en function preg match all php 使用 GLibh
  • 为什么我的代码在编译用于分析 (-pg) 时在多线程下运行比在单线程下运行慢?

    我正在写一个光线追踪器 最近 我在程序中添加了线程 以利用 i5 四核上的附加内核 奇怪的是 应用程序的调试版本现在运行速度变慢 但优化后的构建运行速度比添加线程之前更快 我将 g pg 标志传递给 gcc 以进行调试构建 并将 O3 标志
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入

随机推荐

  • 【C++|排序算法】冒泡、快排、归并、堆排序算法模版

    目录 简介 冒泡排序 快速排序 归并排序 堆排序 结语 简介 Hello 非常感谢您阅读海轰的文章 倘若文中有错误的地方 欢迎您指出 昵称 海轰 标签 程序猿 C 选手 学生 简介 因C语言结识编程 随后转入计算机专业 获得过国家奖学金 有
  • 计算机操作系统--基础篇

    操作系统的演进 多道程序设计 早期批处理系统只能一次处理一个任务 多道程序设计使得批处理系统可以一次处理多个任务 多道程序设计是指在计算机内存中同时存放多个程序 多道程序在计算机的管理程序之下相互穿插运行 多道程序的管理是操作系统的重要功能
  • Security-Onion-Solutions安全洋葱安装方法

    Security Onion Solutions安全洋葱安装方法 securityonion安全洋葱介绍 安全洋葱是一款开源的入侵检测系统 集成了日志分析 流量分析安全告警如 Grafana TheHive Playbook Fleet O
  • 怎么访问服务器网站根目录,如何访问网站根目录

    如何访问网站根目录 内容精选 换一换 根据 互联网信息服务管理办法 非经营性互联网信息服务备案管理办法 等法律法规的规定 国家对经营性互联网信息服务实行许可制度 对非经营性互联网信息服务实行备案制度 未取得许可或者未履行备案手续 不得指向中
  • labview串口,网口,DSC可用OPC通讯链接三菱欧姆龙西门子等PLC

    labview串口 网口 DSC可用OPC通讯链接三菱欧姆龙西门子等PLC 需要的取 可帮助使用 通过NI OPC控制三菱 欧姆龙西门子等各种型号PLC ID 4450645066968702
  • 余光中:书斋·书灾

    本文转载至 http www yuwenonline com Item 1577 aspx 物以类聚 我的朋友大半也是书呆了 很少有朋友约我去户外恋爱春天 大半的时间 我总是与书为伍 大半的时间 总是把自己关在六叠之上 四壁之中 制造氮气
  • 在阿里6年,但今年这情况,劝大家还是多一手准备吧

    大家期待的经济繁荣 没有来 往年的金三银四 跳槽涨薪 也没有来 来了的 是大公司裁员的消息频频爆出 来了的 是ChatGPT 第一批受到影响的人已经失业了 而且你有没有发现 它平时没什么声音 但每次一发布更新 就是一个重磅炸弹 真的 不知道
  • Unity3D独立游戏开发日记(一):动态生成树木

    目前写的独立游戏是一个沙盒类型的游戏 游戏DEMO视频如下 提到沙盒类型的游戏 就有人给出了这样的定义 游戏世界离现实世界越近 自由度 随机度越高才叫沙盒游戏 所谓自由度 就是你在游戏里想干啥就干啥 想开车就开车 想走路就走路 想盖房子就盖
  • QT release版虚拟键盘无反应

    1 在main Cpp 加入 int main int argc char argv qputenv QT IM MODULE QByteArray qtvirtualkeyboard 虚拟键盘调用 QApplication a argc
  • 【定点数运算】定点的乘法和加法

    目录 定点的介绍 定点的优势 定点数的乘法和加法 乘法 加法 定点的介绍 在之前的博客中介绍了定点数和浮点数 想要了解的可以前往以下链接 定点和浮点 定点数与浮点数的解释 定点的优势 使用定点表示有什么优势 为什么不简单地将所有值规范化为整
  • android项目嵌入flutter且解决的问题

    1 在android原生根目录下通过运行命令创建flutter module 这种创建与 flutter new project 内部目录结构不一样 所以直接用命令去创建 2 new Binding 如果标识红色报错 那就看看flutter
  • errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint

    微信access token 在一个地方获取了 同一个公众号其它地方获取的access token 都会失效 就会出现标题中的错误 这个原因可能大家都知道 但是排除的时候可能不好排除 我找了一上午在系统里面 都没有找到 因为自己负责的系统全
  • ReactNative入门(二)——导航和路由

    React Navigation官方文档 https reactnavigation org docs getting started 安装react navigation npm install react navigation nati
  • 临时变量生命期

    有关临时对象的生命周期有三种情况 一般情况 临时性对象的被摧毁 应该是对完整表达式 full expression 求值过程中的最后一个步骤 该完整表达式造成临时对象的产生 以及两个特殊情况 凡含有表达式执行结果的临时性对象 应该存留到ob
  • 网络安全与网站安全及计算机安全:如何使用Kali Linux的Rarcrack获取RAR压缩文件加密密码?

    知识点详解 1 1 Rarcrack是一款获取压缩文件密吗的软件 但是仅支持zip rar和7z三种类型 1 2 在kali操作系统中是没有此工具的 所以就必须先安装才能使用 1 3 安装Rarcrack的指令 apt install ra
  • 测试博客

    在这里插入代码片 TOC Markdown编辑器的使用 你好 这是你第一次使用 Markdown编辑器 所展示的欢迎页 如果你想学习如何使用Markdown编辑器 可以仔细阅读这篇文章 了解一下Markdown的基本语法知识 新的改变 我们
  • 【备忘】清理Office缓存

    背景 电脑安装了M365 Apps for enterprise的客户端 遇到不常见的奇怪问题 尝试看清理缓存是否可以解决 清理步骤 1 关闭所有Office365 应用 2 搜索 AppData 并打开该文件夹 3 进到 AppData
  • java开发Demo~×××扫码支付,java开发示例

    开发所需工具类 开发所需jar 具体的代码不贴了 说明下PayConfigUtil中的参数 APP ID和APP SECRET在公众平台 MCH ID和API KEY在商户平台 其中API KEY是自己设置的 并不是自动生成的 Contro
  • element-variables

    Element Chalk Variables Transition all transition all 3s cubic bezier 645 045 355 1 default fade transition opacity 300m
  • Linux——进程退出

    目录 一 进程退出时有三种选择 1 1 echo 命令 功能 打印距离现在最近一次执行某进程的退出码 例2代码 例3 例4代码 1 3 进程运行过程中可能会出现的错误种类 二 总结 一 进程退出时有三种选择 1 使用return 语句 2