是否有一个函数会为`errno`值返回一个符号名称,例如`EIO`?

时间:2015-11-06 01:53:45

标签: posix errno

在Linux和OS X上,strerror返回一个人类可读的名称。例如,这里是Linux上刚刚返回的错误编号5。

Input/output error

没关系,但是手册页使用了一个符号名称,例如EIO,并且没有列出相应的数字。我可以用任何地方来获取符号名称吗?

1 个答案:

答案 0 :(得分:2)

我非常怀疑纯POSIX提供了以便携方式实现这一目标的工具。在大多数情况下,我个人只需在编辑器中打开/usr/include/errno.h文件并从那里浏览它。 (在Linux上最终会导致实际指定代码的/usr/include/asm-generic/errno-base.h/usr/include/asm-generic/errno.h文件。)

此外,对于具有GCC(或clang)的系统,我可以像这样提出这个小脚本:

gcc -dM -E - < /usr/include/errno.h  |
    grep 'define E\w\+ [0-9]\+$'  |
    sort -k3 -n

GNU预处理器有一个选项(-dM)来打印它遇到输出的所有定义。这可用于帮助解析/usr/include/errno.h文件以提取错误代码。