errno

由于errno的重要性,在这里翻译一下Linux中man手册关于errno的内容以及errno涉及的要点

  • 注意点1 
    就像errno的名字一样,它是最后一个错误的编号,因此要小心在查看错误之前又出现了新的错误。
  • 注意点2 
    errno的值不会被任何程序清除,因此在使用errno的值之前,先要通过函数(系统调用/库函数)的返回值来确定有错误发生了。
  • 注意点3 
    下面表格中没有一个常量是0。所以可以事先将errno的值设为0。
  • C标准引入在错误处理函数
 #include <string.h>
 char *strerror(int errnum);
  • 1
  • 2

这个函数将errno映射到错误消息字符串,并返回一个指向这个字符串的指针。

#include 
void perror(const char *msg);
  • 1
  • 2

perror有类似的功能,只是先加上了一个msg消息|

  • 名字 
    errno - number of last error

  • 头文件

#include 
  • 1
  • 描述 
    定义了整数变量errno。由系统调用和某些库函数根据事件来设置它,用以表明哪里有问题。这个值只有当调用的返回表明错误的时候有用,(比如,对于大多数的系统调用是-1,对于大多数的库函数来说是-1或NULL),正确的函数也可以修改errno。 
    有效的错误number都是非零的; 系统调用和库函数不会把errno设为0。 
    对于某些系统调用和库函数(比如,getpriority(2)),没有错误的时候也会返回-1。在这种情况下,可以在调用之前先将errno设为0,当不确定有没有错误的时候,可以通过查看errno是不是一个非零值来确定是否发生错误。 
    ISO C标准将errno定义为一个可以修改的int型左值,并且不允许准确声明,errno可能是一个宏,errno是thread-local,在一个线程中设置它的值不会影响它在另一个thread中的值。 
    所有由POSIX.1确定的错误名必须有唯一的值,有个例外是,EAGIAN和EWOULDBLOCK可能是相同的。 

  • 下面是Linux定义的符号错误名,如果有POSIX.1标记,表明名字由POSIX.1-2001定义,由C99标记,表明名字由C99定义。
  • errno_第1张图片
  • errno_第2张图片
  • errno_第3张图片
  • errno_第4张图片
  • errno_第5张图片
  • errno_第6张图片
  • errno_第7张图片

你可能感兴趣的:(errno)