An̲*_*rew 5 unix troubleshooting
假设我有一个在 UNIX 机器上运行的应用程序失败,系统错误状态为“13”。现在,我可以轻松地在 errno.h 中查找此值,以发现这是一个权限被拒绝的问题。
> grep -w 13 /usr/include/errno.h
#define EACCES 13 /* Permission denied */
Run Code Online (Sandbox Code Playgroud)
是否有更简单的命令来检索此信息?我希望能够运行这样的东西:
> lookuperror 13
EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)
而不是 grepping 系统头文件。是否存在这样的命令/程序?
更新: 正如下面的答案所指出的,strerror()系统调用返回此信息。是否有任何带有执行此系统调用的可执行实用程序的 UNIX 操作系统,或者我是否需要编写自己的程序来执行此操作?
我用来做
perl -MPOSIX -e 'print strerror($ARGV[0])."\n";' 13
Run Code Online (Sandbox Code Playgroud)
您可以将 Perl 代码放在一个文件中并将其放在路径中。
当然也可以用C来完成
作为解决方法,您可以在 shell 中创建一个别名或函数:
例如。.bashrc
function lookuperror
{
grep -w "$@" /usr/include/errno.h
}
Run Code Online (Sandbox Code Playgroud)