我是C新手,但嘗試了一些系統調用。C編程 - Stat系統調用 - 錯誤
我正在編寫遍歷目錄中所有文件並打印當前文件名和大小的程序。我可以讓程序打印文件名,但是當我執行統計系統調用時會出錯。
下面是一些代碼:
while (dptr = readdir(dirp)) {
if (stat(dptr->d_name, &buf) != 0) {
//Always does this and it does print the file name
printf("Error on when getting size of %s \n", dptr->d_name);
} else {
//Never gets here
printf("%u", buf.st_size);
}
}
我有這樣的描述結構:
struct stat buf;
struct dirent *dptr;
DIR *dirp;
如果我改變:
if (stat(dptr->d_name, &buf) != 0)
到
if (stat(dptr->d_name, &buf) != [EACCES])
它仍然進入循環,這讓我認爲它不能讀取文件名,但它將錯誤語句打印出來沒有問題。
有人能指出我正確的方向嗎?謝謝!
Аркадий
是您所提供的_full_路徑的文件和文件夾的名稱? – 2011-12-15 18:45:23
`stat`永遠不會返回`EACCES`。它將返回-1,然後將`errno`設置爲`EACCES`。 – 2011-12-15 18:51:50
當它在當前目錄中時它工作嗎? (根據@ codaddict的回答) – 2011-12-15 19:00:05