亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查Unix中是否存在目錄(系統調用)

檢查Unix中是否存在目錄(系統調用)

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

3 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

您可以stat通過將目錄名稱作為第一個參數傳遞給系統調用。如果目錄存在,0則返回a ,否則-1返回errno,將其設置為ENOENT


編輯:


如果返回值是0,則需要進行其他檢查以確保該參數實際上是目錄,而不是文件/符號鏈接/字符特殊文件/大容量特殊文件/ FIFO文件。您可以為此使用的st_mode字段stat structure。


查看完整回答
反對 回復 2019-12-03
?
白板的微信

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,則該路徑指向目錄。


否則,它既不是文件也不是目錄(可以是塊設備/符號鏈接等。)


查看完整回答
反對 回復 2019-12-03
  • 3 回答
  • 0 關注
  • 696 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號