C语言错误代码errno

您所在的位置:网站首页 空气能错误代码15 C语言错误代码errno

C语言错误代码errno

2023-09-18 03:07| 来源: 网络整理| 查看: 265

        errno 是记录系统的最后一次错误代码。代码是一个int型的值,在errno.h中定义。查看错误代码errno是调试程序的一个重要方法。当linux C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。

函数执行出错的原因有很多种,在C语言中定义了一个全局的整型变量errno来区分究竟发生了什么类型的错误;

在Linux系统中,可以使用man帮助查看errno的相关帮助文档 1、errno定义在errno.h文件中,该文件放在linux下的/usr/include/errno.h 注:值得注意的是,errno的错误值都不等于0,在C语言中0代表无错误

errno.h文件部分内容展示:

#define EPERM 1 /* Operation not permitted */   #define ENOENT 2 /* No such file or directory */   #define ESRCH 3 /* No such process */   #define EINTR 4 /* Interrupted system call */   #define EIO 5 /* I/O error */   #define ENXIO 6 /* No such device or address */   #define E2BIG 7 /* Argument list too long */   #define ENOEXEC 8 /* Exec format error */   #define EBADF 9 /* Bad file number */   #define ECHILD 10 /* No child processes */   #define EAGAIN 11 /* Try again */   #define ENOMEM 12 /* Out of memory */   #define EACCES 13 /* Permission denied */   #define EFAULT 14 /* Bad address */   #define ENOTBLK 15 /* Block device required */   #define EBUSY 16 /* Device or resource busy */   #define EEXIST 17 /* File exists */   #define EXDEV 18 /* Cross-device link */   #define ENODEV 19 /* No such device */   #define ENOTDIR 20 /* Not a directory */   #define EISDIR 21 /* Is a directory */   #define EINVAL 22 /* Invalid argument */   #define ENFILE 23 /* File table overflow */   #define EMFILE 24 /* Too many open files */   #define ENOTTY 25 /* Not a typewriter */   #define ETXTBSY 26 /* Text file busy */   #define EFBIG 27 /* File too large */   #define ENOSPC 28 /* No space left on device */   #define ESPIPE 29 /* Illegal seek */   #define EROFS 30 /* Read-only file system */

一、想得到errno的值,需引入头文件

#include #include int main(void) { printf("errno = %d\n", errno); if(fopen("any", "r") == NULL) { printf("errno = %d\n", errno); } return 0; }

二、获得错误代码对应的错误信息

在C标准中定义了两个函数帮助打印输出errno的对应错误原因,一个是strerror,另一个是perror

1、strerror——包含在头文件中

//函数原型 /* *功能:将某个错误代码转换成对应的错误信息 */ char *strerror(int errnuum);

函数的简单使用:

#include #include int main(void) { printf("errno5= %s\n", strerror(5)); return 0; }

2、perror——包含在头文件中

//函数原型 /* *功能:根据error打印对应的错误信息 *参数:s: 用户自定义信息字符串,一般是出错的函数名 */ void perror(const char *s);

函数的简单使用:

#include #include int main(void) { printf("error = %d\n", errno); if(fopen("any", "r") == NULL) { perror("fopen"); } return 0; }

提示:在编写程序时,要注意适当地设置函数的返回值来指明函数执行是否成功,并在返回值前给出恰当的提示。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3