当前位置: 首页 > news >正文

[Linux][进程] 进程终止

进程终止的三种情况

1.代码跑完,结果正确

main函数return 0 即可

2.代码跑完,结果不正确

#include <iostream>using namespace std;double Div(int a, int b)
{if(b == 0){// 被除数为0 ,程序将出错}return a/ b;
int main()
{       double c = Div(10,0);return 0;
}

解决思路,通过返回错误码来告诉父进程结果出错

解决方案 1. main() 函数返回错误码

                2. exit()  函数传入错误码.用于强制终止进程

                3._exit()  函数传入错误码.Linux系统函数,不会冲刷缓冲区相当于简化版的exit()

错误码可自定义,也可直接用c标准库里的

// 查看c标准库里的错误码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{int errcode = 0;for(errcode = 0; errcode <= 255; errcode++){printf("错误码%d : %s\n", errcode, strerror(errcode));}return 0;}

查看退出码

指令   echo $?    查看当前bash进程最近一个子进程的退出码 

3.代码跑不完

当进程遇到一些语法没问题但无法处理的错误时,常见的如除以0,野指针等,此时进程绝对无法取得有意义的结果,进程的返回值已经失去意义,将由操作系统以发信号的方式杀死进程

int main()
{// double c = Div(10,0);int d = 10 / 0; // 除0 错误,这个进程无法处理,进程本身已经失去意义,将被操作系统以发信号的方式终止return 0;
}

kill -l 指令查看信号的种类


http://www.mrgr.cn/news/41933.html

相关文章:

  • JS测试框架——Jest
  • 进度条(倒计时)Linux
  • 【力扣 | SQL题 | 每日四题】力扣1783,1757,1747,1623,1468,1661
  • SpringCloud入门(十一)路由过滤器和路由断言工厂
  • MHA携手Atlas:打造高效读写分离解决方案,引领数据库性能飞跃
  • 深度学习数据增强的常用方法
  • 【Matlab绘图】从Excel导入表格并进行三维绘图
  • leetcode 数组 27.移除元素
  • 中断和异常
  • Ray_Tracing_In_One_Weekend下
  • Git版本控制工具--关于命令
  • 武汉自闭症儿童寄宿学校:让孩子快乐成长
  • 易贝恩副总经理朱洪泽受邀为第四届中国项目经理大会演讲嘉宾
  • VirtulBOX Ubuntu22安装dpdk23.11
  • Ericsson EPSFB 通话掉话现象优化案例
  • 探索 aMQTT:Python中的AI驱动MQTT库
  • MySQL 实验 2:数据库的创建与管理
  • C++模版进阶
  • 统计学习理论之VC维究竟是什么
  • Go语言实现长连接并发框架 - 任务执行流上下文