C 我如何知道stat失败的原因?

C 我如何知道stat失败的原因?,c,file,struct,C,File,Struct,我想知道文件是否与C一起存在 我看到我可以通过这个函数来实现: int file_exist (char *filename) { struct stat buffer; return (stat (filename, &buffer) == 0); } 但是如果文件存在,stat也会失败,但是还有一些其他错误(然后我会得到负数)。我怎么知道stat会因为文件不存在而失败呢?至少在UNIX系统中,有一个名为errno的变量可以获取您得到的确切错误。对照EFAULT检查

我想知道文件是否与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 

至少在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