首頁  >  文章  >  運維  >  linux怎麼查看檔案目錄是否存在

linux怎麼查看檔案目錄是否存在

青灯夜游
青灯夜游原創
2022-03-21 13:02:499010瀏覽

檢視方法:1、利用stat系列函數,若存在則傳回與檔案相關的結構資訊;2、利用access函數,語法「access(檔案目錄路徑,F_OK)」;3、利用oepndir函數,如果存在則傳回指針,不存在則傳回NULL。

linux怎麼查看檔案目錄是否存在

本教學操作環境:linux5.9.8系統、Dell G3電腦。

linux查看檔案目錄是否存在

#1、stat系列函數

  stat函數用來返回與文件有關的結構資訊。 stat系列函數有三種情況,分別對應檔案名稱、檔案描述符和符號連結檔案。 stat結構描述了檔案的屬性,主要包括檔案的類型、檔案大小等等。詳細stat結構如下:

struct stat {
    mode_t    st_mode;    // file type & mode(permissions)
    ino_t     st_ino;     // i-node number(serial number)
    dev_t     st_dev;     // device number(filesystem)
    dev_t     st_rdev;    // device number for specials files
    nlink_t   st_nlink;   // number of links
    uid_t     st_uid;     // user ID of owner
    gid_t     st_gid;     // group ID of owner
    off_t     st_size;    // size in bytes, for regular files
    time_t    st_atime;   // time of last access
    time_t    st_mtime;   // time of last modification
    time_t    st_ctime;   // time of last file status change
    long      st_blksize; // best I/O block size
    long      st_blocks;  // number of 512-byte blocks allocated
};

  我們可以透過stat取得檔案的類型和檔案大小等資訊。檔案類型有:普通檔案、目錄檔案、區塊特殊檔案、字元特殊檔案、FIFO、套接字和符號連結。若要透過stat系列函數來判斷檔案或目錄是否存在,當執行stat函數,如果檔案存在時,還需進一步判斷該檔案是普通檔案還是目錄檔案。

stat系列函數錯誤回傳-1,錯誤碼存在errno中,errno取值如下:

ENOENT 参数file_name 指定的文件不存在
ENOTDIR 路径中的目录存在但却非真正的目录
ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接
EFAULT 参数buf 为无效指针, 指向无法存在的内存空间
EACCESS 存取文件时被拒绝
ENOMEM 核心内存不足
ENAMETOOLONG 参数file_name 的路径名称太长

2、access函數

  access函數依照實際使用者ID和實際群組進行存取權限測試。函數原型為:

#include <unistd.h>
int access(const char *pathname, int mode);

mode取值:

  • F_OK   測試檔案是否存在

  • R_OK  測試讀取權限

  • W_OK 測試寫入權限

  • X_OK 測試執行權限

正確判斷一個檔案是否存在是用access函數,實作如下圖:

3、oepndir函數

opendir函數用來開啟檔案目錄,成功傳回指標,出錯返回NULL。實作如下:

相關推薦:《Linux影片教學

以上是linux怎麼查看檔案目錄是否存在的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn