当调用execl(…)时,我得到一个errno=2。这是什么意思?我怎么知道这个errno的意思?
当前回答
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int main(int i, char *c[]) {
if (i != 2)
fprintf(stderr, "Usage: perror errno\n");
else {
errno = atoi(c[1]);
perror("");
}
exit(0);
}
适用于Solaris。 Cc perror.c -o perror <<使用这一行来编译它
其他回答
在Linux上也有一个非常简洁的工具,可以立即告诉每个错误代码的含义。Ubuntu: apt-get install errno。
然后,例如,如果您想获取错误类型2的描述,只需在终端中键入errno 2。
使用errno -l可以得到一个包含所有错误及其描述的列表。比之前的海报提到的其他方法简单多了。
Call
perror("execl");
以防出错。
示例:
if(read(fd, buf, 1)==-1) {
perror("read");
}
errno(3)和perror(3)的手册页也很有趣……
我在我的.bashrc文件中有以下函数-它从头文件中查找errno值(可以是/usr/include/errno.h, /usr/include/linux/errno.h,等等,等等)
如果头文件安装在机器上,它就可以工作;-)
通常头文件有一个错误+接下来是注释中的解释;以下内容:
./asm-generic/errno-base.h:#define EAGAIN 11 /*重试*/
function errno()
{
local arg=$1
if [[ "x$arg" == "x-h" ]]; then
cat <<EOF
Usage: errno <num>
Prints text that describes errno error number
EOF
else
pushd /usr/include
find . -name "errno*.h" | xargs grep "[[:space:]]${arg}[[:space:]]"
popd
fi
}
它的意思是:
未找到文件或目录。
您可以使用以下一行程序检索系统上的errno值的完整列表,而不是对所得到的任何错误代码运行perror:
cpp -dM /usr/include/errno.h | grep 'define E' | sort -n -k