View method: 1. Use the stat series function, if it exists, return the structural information related to the file; 2. Use the access function, the syntax is "access (file directory path, F_OK)"; 3. Use the oepndir function , returns a pointer if it exists, returns NULL if it does not exist.
#The operating environment of this tutorial: linux5.9.8 system, Dell G3 computer.
linux Check whether the file directory exists
1. stat series functions
The stat function is used to return structural information about the file. 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 of 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.
The stat series function error returns -1, the error code is stored in errno, the value of errno is as follows:
ENOENT 参数file_name 指定的文件不存在 ENOTDIR 路径中的目录存在但却非真正的目录 ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接 EFAULT 参数buf 为无效指针, 指向无法存在的内存空间 EACCESS 存取文件时被拒绝 ENOMEM 核心内存不足 ENAMETOOLONG 参数file_name 的路径名称太长
2, access function
access function Test access against actual user IDs and actual groups. The function prototype is:
#includeint access(const char *pathname, int mode);
mode value:
F_OK Test whether the file exists
R_OK Test read permission
W_OK Test write permission
X_OK Test execution permission
Used to correctly determine whether a file exists The access function is implemented as follows:
3. The oepndir function
opendir function is used to open a file directory and returns a pointer successfully. , returns NULL on error. The implementation is as follows:
Related recommendations: "Linux Video Tutorial"
The above is the detailed content of How to check whether a file directory exists in Linux. For more information, please follow other related articles on the PHP Chinese website!