我errno
在使用perror
with时遇到了意想不到的价值glibc
。当一个不存在的文件被指定为它按预期arg[1]
打印Error: 2
(即)时。ENOENT
但是,当下面的行未注释时,无论我传递什么,perror
它都会引发错误 22 ( )。EINVAL
谁能解释一下为什么会这样?
编辑:看起来这是某种 Eclipse 错误。IDE 似乎导致 perror 引发某种错误,该程序在命令行上完美运行,并且当在 Eclipse 的参数列表中指定正确的文件时完美运行。在 Eclipse 中运行时它会错误地失败。
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[]) {
FILE *input_file;
input_file = fopen(argv[argc - 1], "r");
if (!input_file) {
// perror(argv[argc-1]);
fprintf(stderr, "Error: %d\n", errno);
return (EXIT_FAILURE);
}
else {
fclose(input_file);
}
return (EXIT_SUCCESS);
}