我想知道C文件是否存在。
我看到我可以通过这个功能来做到这一点:
int file_exist (char *filename)
{
struct stat buffer;
return (stat (filename, &buffer) == 0);
}
但是如果文件存在,stat也会失败,但是还有一些其他错误(然后我会得到负数)。我怎么知道stat因为文件不存在而失败?
答案 0 :(得分:4)
至少在UNIX系统中有一个名为errno的var,它可以获得你得到的确切错误。检查EFAULT。 (有关man 2 stat
和man errno
)的详细信息。
检查是这样的:
if (stat(path) == -1)
if (errno == EFAULT)
//file does not exist
else
//some other error occurred