Home  >  Article  >  Operation and Maintenance  >  How to determine whether a directory exists in Linux

How to determine whether a directory exists in Linux

(*-*)浩
(*-*)浩Original
2019-11-06 11:31:565082browse

How to determine whether a directory exists in Linux

#The file system is involved in the work, and sometimes it is necessary to determine whether files and directories exist. I combined APUE Chapter 4 Files and Directories to summarize how to correctly determine whether files and directories exist, so as to facilitate future inquiries.                                                                                                                               (Recommended learning: linux operation and maintenance )

stat series functions

The stat function is used to return structural information related to files. The stat series functions have three situations, corresponding to file names, file descriptors and symbolic link files respectively. The stat structure describes the file attributes, mainly including file type, file size, etc. The detailed stat structure is as follows:

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
};

We can obtain information such as file type and file size through stat. File types are: ordinary files, directory files, block special files, character special files, FIFO, sockets and symbolic links. If you want to use the stat series functions to determine whether a file or directory exists, when executing the stat function, if the file exists, you need to further determine whether the file is an ordinary file or a directory file.

stat series function error returns -1, the error code is stored in errno, the value of errno is as follows:

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

The above is the detailed content of How to determine whether a directory exists in Linux. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn