Linux详解:进程终止、错误码

2024-04-29 08:04

本文主要是介绍Linux详解:进程终止、错误码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 进程终止
    • main函数返回值
    • 函数错误码
    • 进程退出场景
    • 进程常见退出方式

进程终止

main函数返回值

main函数的返回值,叫做进程的退出码。该退出码表示整个进程的执行结果。
  • 0:表示成功
  • 非0:表示失败

成功不需要理由,失败需要原因。
非0,不同的数字,表示不同的失败原因。

  • echo $?
    查看最近一次,进程退出,返回的退出码。

退出码
每个退出码都可以转化成为相对应的退出错误描述。

  • 使用语言和系统自带的方法,进行转化
  • 自定义

查看系统中提供的错误(退出)码描述
strerror():获取指向错误信息字符串的指针

#include<stdio.h>
#include<string.h>int main()
{for(int i = 0;i<200;i++){printf("%d: %s\n",i,strerror(i));}return 0;
}

自定义退出码描述错误
可以自定义退出码的代表含义。

enum{success=0;open_err,malloc_err
};const char* error(int code)
{switch(code){case success:return "success";case open_err:return "file open error";case malloc_err:return "malloc error";default:return "unkonw error";}
}

其他函数仅仅表示函数调用完毕。

函数错误码

函数再执行出错的时候也存在一个退出码,通常称之为错误码。

  • #include<errno.h>
  • errno() :获取错误编号
int main()
{File* fp = fopen("./log.txt","r");printf("%d:%s\n",errno,strerror(errno));return 0;
}

进程退出场景

  • 进程代码运行完毕,结果正确

  • 进程代码运行完毕,结果不正确

  • 进程代码没有执行完,进程异常终止

    • 进程出现了异常,就是进程收到了异常信号,每个信号都有不同的编号,不同的信号编号表明不同的异常原因。
  • 任何进程最终的执行情况,都可以使用两个数字表明具体执行的情况
    信号编号 进程退出码

信号编号进程退出码表示状态
00没有异常,结果正确
!00出现异常,退出码无意义
0!0没有异常,结果错误
!0!0出现异常,退出码无意义

进程常见退出方式

  • echo $?
    查看最近一次,进程退出,返回的退出码。

正常终止
可以通过echo $?查看进程退出码

  • 从main返回
  • 调用exit()
  • _exit

exit():正常的进程终止

#include<stdlib.h>
void exit(int status);
exit可以用来终止进程,exit的参数就是退出码。在进程代码中,任意位置调用exit,都表示进程退出

**_exit():进程终止

#include<unistd.h>
void _exit(int status);
系统调用,作用和exit相同

exit和_exit的区别

  • exit:会刷新缓冲区
  • _exit:不支持刷新缓冲区

异常退出

  • ctrl+c,信号终止

这篇关于Linux详解:进程终止、错误码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945539

相关文章

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Java中的JSONObject详解

《Java中的JSONObject详解》:本文主要介绍Java中的JSONObject详解,需要的朋友可以参考下... Java中的jsONObject详解一、引言在Java开发中,处理JSON数据是一种常见的需求。JSONObject是处理JSON对象的一个非常有用的类,它提供了一系列的API来操作J

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J