2014-03-01 35 views
1

我想知道,如果文件存在与C我如何知道stat为什么失败?

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

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

但统计也可以失败,如果该文件存在,但也有一些其他的错误(然后我会得到负数)。我如何知道stat因为文件不存在而失败?

回答

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 
相关问题