在Linux和OS X上,strerror
返回一个人类可读的名称。例如,这里是Linux上刚刚返回的错误编号5。
Input/output error
没关系,但是手册页使用了一个符号名称,例如EIO
,并且没有列出相应的数字。我可以用任何地方来获取符号名称吗?
答案 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
文件以提取错误代码。