【发布时间】:2014-03-01 18:51:25
【问题描述】:
我想知道文件是否存在于 C 中。
我看到我可以通过这个函数做到这一点:
int file_exist (char *filename)
{
struct stat buffer;
return (stat (filename, &buffer) == 0);
}
但如果文件存在,stat 也可能失败,但还有一些其他错误(然后我会得到负数)。我怎么知道 stat 因为文件不存在而失败?
【问题讨论】:
我想知道文件是否存在于 C 中。
我看到我可以通过这个函数做到这一点:
int file_exist (char *filename)
{
struct stat buffer;
return (stat (filename, &buffer) == 0);
}
但如果文件存在,stat 也可能失败,但还有一些其他错误(然后我会得到负数)。我怎么知道 stat 因为文件不存在而失败?
【问题讨论】:
至少在 UNIX 系统中,有一个名为 errno 的变量可以得到你得到的确切错误。对照 EFAULT 检查它。 (有关man 2 stat 和man errno 的更多详细信息)。
检查是这样的:
if (stat(path) == -1)
if (errno == EFAULT)
//file does not exist
else
//some other error occurred
【讨论】: