当调用execl(…)时,我得到一个errno=2。这是什么意思?我怎么知道这个errno的意思?


当前回答

Call

perror("execl");

以防出错。

示例:

if(read(fd, buf, 1)==-1) {
    perror("read");
}

errno(3)和perror(3)的手册页也很有趣……

其他回答

这比在errno.h中查找代码要快,比这里发布的大多数解决方案都要短,并且不需要安装第三方工具:

perl -E 'say $!2 =转变'

收益率

没有这样的文件或目录

在shell中输入sudo apt-get install moreutils,然后,一旦安装完成,输入errno 2。您还可以对所有错误编号使用errno -l,或者通过将其输送到grep只查看文件编号,如下所示:errno -l | grep file。

我使用以下脚本:

#!/usr/bin/python

import errno
import os
import sys

toname = dict((str(getattr(errno, x)), x) 
              for x in dir(errno) 
              if x.startswith("E"))
tocode = dict((x, getattr(errno, x)) 
              for x in dir(errno) 
              if x.startswith("E"))

for arg in sys.argv[1:]:
    if arg in tocode:
        print arg, tocode[arg], os.strerror(tocode[arg])
    elif arg in toname:
        print toname[arg], arg, os.strerror(int(arg))
    else:
        print "Unknown:", arg

错误码2表示“未找到文件/目录”。通常,可以使用perror函数打印人类可读的字符串。

Call

perror("execl");

以防出错。

示例:

if(read(fd, buf, 1)==-1) {
    perror("read");
}

errno(3)和perror(3)的手册页也很有趣……