假设我有一个在 UNIX 机器上运行的应用程序失败,系统错误状态为“13”。现在,我可以很容易地在 errno.h 中查找这个值,发现这是一个权限被拒绝的问题。
> grep -w 13 /usr/include/errno.h
#define EACCES 13 /* Permission denied */
有没有更简单的命令来检索这些信息?我希望能够运行这样的东西:
> lookuperror 13
EACCES (Permission denied)
而不是 grepping 系统头文件。这样的命令/程序是否存在?
更新: 正如下面的答案所指出的,strerror()
系统调用会返回此信息。是否有任何 UNIX 操作系统附带执行此系统调用的可执行实用程序,还是我需要编写自己的程序来执行此操作?
我用来做
您可以将 Perl 代码放在一个文件中并将其放在路径中。
当然也可以用C来完成
试试 strerror(3)。
从手册页:
作为一种解决方法,您可以在 shell 中创建别名或函数:
例如。
.bashrc
cpp -dM
预处理源文件或头文件并打印#define
它找到的每一个。它比 grepping through 更强大/usr/include/errno.h
,因为它会获取/usr/include/errno.h
包含的每个文件。将 cpp -dM 与其他人的建议相结合:
插入 .bashrc,或将其内容作为独立的 shell 脚本。