当调用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 <<使用这一行来编译它

其他回答

您可以使用以下一行程序检索系统上的errno值的完整列表,而不是对所得到的任何错误代码运行perror:

cpp -dM /usr/include/errno.h | grep 'define E' | sort -n -k

它的意思是:

未找到文件或目录。

这里是文档。这应该会告诉你它的含义以及如何处理它们。您应该避免使用数值,并使用这里列出的常量,因为数字在不同的系统之间可能会发生变化。

#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 <<使用这一行来编译它

Call

perror("execl");

以防出错。

示例:

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

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