[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 指令查看信号的种类

相关推荐
小菱形_10 小时前
【C#】LINQ
开发语言·c#·linq
爱吃大芒果10 小时前
Flutter 基础组件详解:Text、Image、Button 使用技巧
开发语言·javascript·flutter·华为·ecmascript·harmonyos
Molesidy10 小时前
【Linux】【Imx6ull Pro】基于Imx6ull Pro开发板的Linux-C-C++编程记录
linux·嵌入式·嵌入式linux应用层
Hominid⁺10 小时前
深度解析:C 语言的 8 个翻译阶段与 GCC 编译全流程
c语言·开发语言
steins_甲乙10 小时前
C++并发编程
开发语言·c++
曹牧10 小时前
C#:foreach
开发语言·c#
计算机学姐10 小时前
基于Python的商场停车管理系统【2026最新】
开发语言·vue.js·后端·python·mysql·django·flask
小猪快跑爱摄影10 小时前
【AutoCad 2025】【Python】零基础教程(一)——简单示例
开发语言·python
AI云原生10 小时前
在 openEuler 上使用 x86_64 环境编译 ARM64 应用的完整实践
java·运维·开发语言·jvm·开源·开源软件·开源协议
赖small强10 小时前
【Linux 内存管理】Linux系统中CPU访问内存的完整机制深度解析
linux·缓存·tlb·内存访问·page table