【Linux】Linux系统错误码errno详解

errno 是一个整数值,它被系统函数设置为提供关于错误的额外信息。每个错误代码通常与特定类型的错误相关联。

在 Linux 系统中,errno 的定义在 <errno.h> 头文件中,你可以通过查看这个文件来获取所有可能的错误代码及其含义。

以下是一些常见的 errno 错误代码及其含义:

  • EPERM:操作不允许,缺乏必要的权限。
  • ENOENT:文件或目录不存在。
  • ESRCH:没有这个进程。
  • EINTR:系统调用被信号中断。
  • EIO:输入/输出错误。
  • ENXIO:设备不存在。
  • E2BIG:参数列表过长。
  • ENOEXEC:无法执行格式错误。
  • EBADF:文件描述符不正确。
  • ECHILD:没有子进程。
  • EAGAIN:尝试非阻塞操作,但无法完成。
  • ENOMEM:没有足够的内存。
  • EACCES:权限被拒绝。
  • EFAULT:内存访问错误。
  • ENOTBLK:块设备号不存在。
  • EBUSY:设备或资源忙。
  • EEXIST:文件已经存在。
  • EXDEV:跨设备链接不允许。
  • ENODEV:没有这个设备。
  • ENOTDIR:路径不是一个目录。
  • EISDIR:操作是目录。
  • EINVAL:参数无效。
  • ENFILE:打开的文件太多。
  • EMFILE:进程打开的文件太多。
  • EFBIG:文件过大。
  • ENOSPC:设备上没有空间。
  • ESPIPE:不合适的寻道操作。
  • EROFS:只读文件系统。
  • EMLINK:链接过多。
  • EPIPE:管道断裂。
  • EDOM:数学参数超出范围。
  • ERANGE:结果超出表示范围。

要在程序中检查和处理 errno,你可以包含 <errno.h> 并在系统调用后检查它的值。如果 errno 不为零,则表示有错误发生。你可以使用 strerror(errno) 函数将错误代码转换为错误描述字符串。

示例代码:




#include <stdio.h>
#include <errno.h>
#include <string.h>
 
int main() {
    FILE *fp = fopen("/nonexistent/file", "r");
    if (fp == NULL) {
        printf("Error opening file: %s\n", strerror(errno));
        // 处理错误,例如:
        // if (errno == ENOENT) {
        //     // 特定的错误处理
        // }
    }
    return 0;
}

在上面的例子中,尝试打开一个不存在的文件,因此 fopen 会失败,并且 errno 会被设置为 ENOENT。程序会输出错误描述字符串。

最后修改于:2024年08月16日 11:22

评论已关闭

推荐阅读

Vue中使用mind-map实现在线思维导图
2024年08月04日
VUE
Web前端最全Vue实现免密登录跳转的方式_vue怎么样不登录返回首页,最强技术实现
2024年08月04日
VUE
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)
2024年08月04日
VUE
Vue-颜色选择器实现方案——>Vue-Color( 实战*1+ Demo*7)
2024年08月04日
VUE
Vue项目卡顿慢加载?这些优化技巧告诉你!_vue数据多渲染卡顿
2024年08月04日
VUE
vue中的keep-alive详解与应用场景
2024年08月04日
VUE
Vue、React实现excel导出功能(三种实现方式保姆级讲解)
2024年08月04日
vue-office/docx插件实现docx文件预览
2024年08月04日
VUE
java调用js文件的两种方法(支持V8引擎)
2024年08月04日
JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
2024年08月04日
两周从爬虫小白变大神 _yjs_js_security_passport
2024年08月04日
JS笔记(对象、函数、数组)
2024年08月04日
Markdown.js:强大的纯JavaScript Markdown解析器
2024年08月04日
Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。
2024年08月04日
vue 父组件怎么获取子组件里面的data数据
2024年08月04日
VUE
个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)
2024年08月04日
el-table 表格封装并改造实现单元格可编辑
2024年08月04日
none
nodejs环境下创建vue项目、SSH密钥登陆!!!
2024年08月04日
vue+quill+element-ui实现视频、图片上传及缩放保姆级教程,轻松使用富文本
2024年08月04日
【three.js】22. Imported Models导入模型
2024年08月04日