Le système de fichiers est impliqué dans le travail, et il est parfois nécessaire de déterminer si des fichiers et des répertoires existent. J'ai combiné le chapitre 4 de l'APUE, Fichiers et répertoires, pour résumer comment déterminer correctement si des fichiers et des répertoires existent, afin de faciliter les enquêtes futures. (Apprentissage recommandé : Fonctionnement et maintenance de Linux )
La fonction série STAT
La fonction STAT est utilisée pour renvoyer les informations structurelles liées déposer.Les fonctions de la série stat ont trois situations, correspondant respectivement au nom de fichier, au descripteur de fichier et au fichier de lien symbolique. La structure statistique décrit les attributs du fichier, notamment le type de fichier, la taille du fichier, etc. La structure détaillée des statistiques est la suivante :
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 };
Pour déterminer si un fichier ou un répertoire existe via la série de fonctions stat, lors de l'exécution de la fonction stat, si le fichier existe, il est nécessaire de déterminer en outre si le fichier est un fichier ordinaire ou un fichier de répertoire.
L'erreur de la fonction série statistique renvoie -1. Le code d'erreur est stocké dans errno La valeur de errno est la suivante :1、ENOENT 参数file_name 指定的文件不存在 2、ENOTDIR 路径中的目录存在但却非真正的目录 3、ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接 4、EFAULT 参数buf 为无效指针, 指向无法存在的内存空间 5、EACCESS 存取文件时被拒绝 6、ENOMEM 核心内存不足 7、ENAMETOOLONG 参数file_name 的路径名称太长
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!