我怎么知道为什么stat失败了?

时间:2014-03-01 18:51:25

标签: c file struct

我想知道C文件是否存在。

我看到我可以通过这个功能来做到这一点:

int file_exist (char *filename)
{
  struct stat   buffer;   
  return (stat (filename, &buffer) == 0);
}

但是如果文件存在,stat也会失败,但是还有一些其他错误(然后我会得到负数)。我怎么知道stat因为文件不存在而失败?

1 个答案:

答案 0 :(得分:4)

至少在UNIX系统中有一个名为errno的var,它可以获得你得到的确切错误。检查EFAULT。 (有关man 2 statman errno)的详细信息。

检查是这样的:

if (stat(path) == -1)
    if (errno == EFAULT)
        //file does not exist
    else
        //some other error occurred