首页 理论教育 errno和doserrno用法解析

errno和doserrno用法解析

时间:2023-10-25 理论教育 版权反馈
【摘要】:头文件<cerrno>包含了诸多错误编码。下面逐一介绍C++ STL中关于错误编码的内容。在不同的错误条件下或事件中,诸多错误代码被赋值给变量er-rno。因此,errno的值并不是必须和实际的错误代码保持一致。错误代码是通过系统调用从Windows操作系统获取的。为实现访问实际的操作系统错误代码,可使用doserrno变量。错误意味着任何方式访问文件的尝试是不和文件的属性矛盾的。对于一个数学函数的参数,此错误代码是指没有在合适的范围内。

errno和doserrno用法解析

头文件<cerrno>包含了诸多错误编码。下面逐一介绍C++ STL中关于错误编码的内容。变量errno的值是常量。在不同的错误条件下或事件中,诸多错误代码赋值给变量er-rno。头文件<errno.h>包含了诸多变量errno值的定义。然而,在32位Windows操作系统中,并不是所有定义都是在头文件<errno.h>中给出的。头文件<errno.h>中的值同时也保持了同UNIX家族操作系统的兼容性

在32位Windows操作系统中,变量errno的值是XENIX系统中errno值的子集。因此,errno的值并不是必须和实际的错误代码保持一致。错误代码是通过系统调用从Windows操作系统获取的。为实现访问实际的操作系统错误代码,可使用doserrno变量。该变量中包含了这些值。以下错误代码值是通常被支持的。

•ECHILD——没有大量的处理过程。

•EAGAIN——没有进一步的处理。尝试创建一个新的过程,如果尝试失败主要是因为没有进一步的进程缝隙,或没有足够的内存,或达到了最大嵌套级别。

•E2BIG——参数列表太长。

•EACCES——不被认可。文件设置不被允许特殊的访问。错误意味着任何方式访问文件的尝试是不和文件的属性矛盾的。

•EBADF——坏的文件代码。两个可能的原因:①特定的文件描述符是无效值;②没有指向已打开的文件。

•EDEADLOCK——资源的死锁会发生。对于一个数学函数的参数,此错误代码是指没有在合适的范围内。

•EDOM——数学参数。

•EEXIST——文件存在。当尝试创建一个文件时,发现该文件已经存在。例如,当实现open调用时,_O_CREAT和_O_EXCL标识是特定的,但命名的文件已经存在。

•EILSEQ——字节的非法序列(例如在一个MBCS字符串中)。(www.xing528.com)

•EINVAL——无效参数。函数的参数之一是无效值。例如,当定位文件时,最初的给定值处于文件头之前。

•EMFILE——太多被打开的文件。不能创建更多的文件描述符,也不能再打开更多的文件。

•ENOENT——没有该文件和路径。指定的文件或路径不存在或不能被发现。当指定的文件不存在,或文件路径不能说明一个已存在的路径时,该信息会发生。

•ENOEXEC——可执行文件格式错误。尝试执行一个文件时,该文件是不可执行的,或具有无效可执行文件格式。

•ENOMEM——没有足够的内存。当尝试操作符时,设备没有足够的内存。例如,当无足够的内存用于执行子进程时,此信息会发生;或要求调用getcwd却不能得到满足时。

•ENOSPC——设备没有剩余空间。设备没有足够的空间用于写操作。例如磁盘已满。

•ERANGE——结果值太大。数学函数的参数值太大,导致部分或全部失去意义。当

函数的参数远大于其期望值时,此错误也可以发生在其他类型的函数中。

•EXDEV——交叉设备链接。当尝试移动文件到其他存储设备时会发生此类错误提示。

•STRUNCATE——字符串备份或其他相关事物导致一个截取的字符串。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈