我無法在線找到解決問題的方法。我想在Unix中調用一個函數,傳遞目錄的路徑,然后知道它是否存在。opendir()如果目錄不存在,則返回錯誤,但我的目標不是實際打開,檢查該錯誤,如果沒有錯誤則將其關閉,而只是檢查文件是否為目錄。請問有什么方便的方法嗎?
3 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
您可以stat通過將目錄名稱作為第一個參數傳遞給系統調用。如果目錄存在,0則返回a ,否則-1返回errno,將其設置為ENOENT
編輯:
如果返回值是0,則需要進行其他檢查以確保該參數實際上是目錄,而不是文件/符號鏈接/字符特殊文件/大容量特殊文件/ FIFO文件。您可以為此使用的st_mode字段stat structure。

白板的微信
TA貢獻1883條經驗 獲得超3個贊
另一個簡單的方法是:
int check(unsigned const char type) {
if(type == DT_REG)
return 1;
if(type == DT_DIR)
return 0;
return -1;
}
然后,您可以將struct dirent *對象的d_type傳遞給check函數。
如果檢查返回1,則該路徑指向常規文件。
如果check返回0,則該路徑指向目錄。
否則,它既不是文件也不是目錄(可以是塊設備/符號鏈接等。)
- 3 回答
- 0 關注
- 696 瀏覽
添加回答
舉報
0/150
提交
取消