[Linux][进程] 进程终止

进程终止的三种情况

1.代码跑完,结果正确

main函数return 0 即可

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

cpp 复制代码
#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() 函数返回错误码

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

3._exit() 函数传入错误码.Linux系统函数,不会冲刷缓冲区相当于简化版的exit()
错误码可自定义,也可直接用c标准库里的

cpp 复制代码
// 查看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,野指针等,此时进程绝对无法取得有意义的结果,进程的返回值已经失去意义,将由操作系统以发信号的方式杀死进程

cpp 复制代码
int main()
{

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

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

相关推荐
天天进步20155 分钟前
Python全栈项目--社区问答平台
开发语言·python·django
牛油果子哥q7 分钟前
【C++指针与引用】C++指针与引用底层彻底精讲:本质区别、易错深坑、底层内存模型、工程选型、笔试面试满分解析
c++·面试
代码熬夜敲Q10 分钟前
网络工程相关
linux·服务器·网络
skywalk816312 分钟前
Tree-sitter是一个解析器生成器工具和一个增量解析库。它可以为源文件构建具体的语法树,并在编辑源文件时有效地更新语法树
开发语言·编程
十五年专注C++开发21 分钟前
CMake实践:VS2019控制台程序隐藏控制台方法
c++·windows·cmake·控制台隐藏
AI视觉网奇23 分钟前
Bambu Studio 发现 xx个开放边
开发语言·人工智能·python
我先去打把游戏先24 分钟前
VMware NAT 模式 Ubuntu 虚拟机「宿主机能上网、虚拟机 ping 不通外网 + apt 更新卡死」全故障复盘
linux·运维·vscode·单片机·嵌入式硬件·ubuntu·keil5
小欣加油24 分钟前
leetcode3635 最早完成陆地和水上游乐设施的时间II
数据结构·c++·算法·leetcode
开压路机27 分钟前
基础IO
linux·运维·服务器
qq_4581482030 分钟前
科大讯飞实时语音识别(rtasr)真实项目踩坑经验总结与手把手教学真实可运行Demo
java·开发语言·websocket·语音识别