LDD学习笔记 -- Linux错误码
-
- EACCES(Permission Denied) 13
- EEXIST(File Exits) 17
- EINVAL(Invalid Argument) ==22==
- ENOENT(No Such File or Directory)
- ENOMEM(Out of Memory)
- EIO(Input/Output Error) 5
- ENOSPC(No space Left on Device)
- ENOTTY(Not a Typewrite)
- EPIPE(Broken Pipe)
- EINTR(Interrupted System Call)
- EBUSY(Device or Resource Busy) 16
- ENOTDIR(Not a Directory) 20
- ENOTEMPTY(Directory Not Empty)
- ENAMETOOLONG(File name too long)
- ENOSYS(Function Not Implement)
- EROFS(Read-Only File System)
错误码,常被称为errno
值(用户空间全局变量),被定义在<errno.h>
头文件中。
系统调用和库函数使用这些错误代码指示程序执行期间可能发生的各种错误情况。
错误码会从内核空间传到用户空间,用户空间的errno会被设置称内核模块返回的错误值,用户程序以确定内核空间的系统调用处理发生的错误。
<kernel source>/include/uapi/asm-generic/errno-base.h
文件中具体错误码的定义
EACCES(Permission Denied) 13
没有权限。
例如没有访问文件/资源等特定操作的权限
EEXIST(File Exits) 17
当一个文件/目录已存在,尝试使用相同名称创建操作时返回
EINVAL(Invalid Argument) 22
传递给系统调用或函数的参数无效
ENOENT(No Such File or Directory)
被引用的文件/目录在文件系统中不存在
ENOMEM(Out of Memory)
系统可用内存不足导致操作失败
EIO(Input/Output Error) 5
指示硬件/低级I/O错误,通常与存储设备或硬件通信有关
ENOSPC(No space Left on Device)
存储设备上没有可用空间执行写操作
ENOTTY(Not a Typewrite)
终端设备上不支持某个操作,通常用于和ioctl相关的错误
EPIPE(Broken Pipe)
Pip,试图写入没有读取器的管道,或管道写入操作失败
EINTR(Interrupted System Call)
系统调用在成功完成前被信号中断
EBUSY(Device or Resource Busy) 16
请求的设备或资源已被另一个进程使用
ENOTDIR(Not a Directory) 20
不是个目录
ENOTEMPTY(Directory Not Empty)
尝试删除非空目录时返回
ENAMETOOLONG(File name too long)
ENOSYS(Function Not Implement)
在当前平台或内核版本上没有实现函数或系统调用
EROFS(Read-Only File System)
尝试写入只读文件系统时返回