How to determine whether a file exists in Linux

Release: 2019-12-13 10:08:49
Original
5427 people have browsed it

How to determine whether a file exists in Linux

How to determine whether a file exists under Linux:

1. 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 };
Copy after login

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:

1. The file specified by the ENOENT parameter file_name does not exist

2. The directory in the ENOTDIR path exists but is not a real directory

3. The file to be opened by ELOOP has too many symbolic links. The upper limit is 16 symbolic links

4. EFAULT parameter buf It is an invalid pointer, pointing to a memory space that cannot exist

5. EACCESS was denied when accessing the file

6. ENOMEM core memory is insufficient

7. The path of the ENAMETOOLONG parameter file_name The name is too long

2. Access function

The access function tests access permissions based on the actual user ID and actual group. The function prototype is:

#include  int access(const char *pathname, int mode);
Copy after login

mode value:

F_OK Test whether the file exists

R_OK Test read permission

W_OK Test write permission

X_OK Test execution permissions

To correctly determine whether a file exists, use the access function. The implementation is as follows:

How to determine whether a file exists in Linux

3. oepndir function

The opendir function is used to open a file directory and returns a pointer if successful or NULL if an error occurs. The implementation is as follows:

How to determine whether a file exists in Linux

(Recommended learning:linux tutorial)

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

Related labels:
source:php.cn
Statement of this Website
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
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!