2014-03-01 57 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 
相關問題