错误处理
许多系统调用和函数都会因为各种各样的原因失败。他们失败时设置外部变量errno 来知名失败原因。许多不同函数库都把这个变量用做报告错误的标准方法。
注意:程序必须在函数报告出错 之后立刻检查errno 变量,因为它可能马上就被下一个函数调用所覆盖,即使下一个函数没有出错,也可能会覆盖这个变量。
常见错误码
错误码 | 描述 |
---|---|
EPERM |
操作不允许 |
ENOENT |
文件或目录不存在。 |
EINTR |
系统调用被中断。 |
EAGAIN |
重试,下次有可能成功! |
EBADF |
文件描述符失效或本身无效 |
EIO |
I/O错误。 |
EBUSY |
设备或资源忙。 |
EEXIST |
文件存在。 |
EINVL |
无效参数。 |
EMFILE |
打开的文件过多。 |
ENODEV |
设备不存在。 |
EISDIR |
是一个目录。 |
ENOTDIR |
不是一个目录。 |
E2BIG |
参数列表太长 |
EACCESS |
权限不足 |
ECHILD |
无子进程 |
EDOM |
数学参数不在函数域内 |
EFAULT |
地址错误 |
EFBIG |
文件太大 |
错误码打印可以使用strerror
或perror
函数。