Maison > Article > Opération et maintenance > Comment déterminer si un fichier existe sous Linux
Comment déterminer si un fichier existe sous Linux :
1. Fonctions de la série stat
La fonction stat est utilisée pour renvoyer des informations structurelles liées à fichiers . Les fonctions des séries statistiques ont trois situations, correspondant respectivement aux noms de fichiers, aux descripteurs de fichiers et aux fichiers de liens symboliques. 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 };
Nous pouvons obtenir des informations telles que le type et la taille du fichier via stat. Les types de fichiers sont : les fichiers ordinaires, les fichiers de répertoire, les fichiers spéciaux de bloc, les fichiers spéciaux de caractères, FIFO, les sockets et les liens symboliques. Si vous souhaitez utiliser la série de fonctions stat pour déterminer si un fichier ou un répertoire existe, lors de l'exécution de la fonction stat, si le fichier existe, vous devez déterminer davantage si le fichier est un fichier ordinaire ou un fichier de répertoire.
L'erreur de la fonction stat series renvoie -1. Le code d'erreur est stocké dans errno La valeur de errno est la suivante :
1 Le fichier spécifié par le paramètre ENOENT file_name. n'existe pas
2. Le répertoire dans le chemin ENOTDIR existe mais n'est pas un vrai répertoire
3. Le fichier à ouvrir par ELOOP a trop de liens symboliques, la limite supérieure est de 16 liens symboliques
4. Paramètre EFAULT buf C'est un pointeur invalide, pointant vers un espace mémoire qui ne peut pas exister
5 EACCESS a été refusé lors de l'accès au fichier
6. La mémoire principale ENOMEM est insuffisante
7. Le chemin du paramètre ENAMETOOLONG file_name Le nom est trop long
Fonction d'accès
La fonction d'accès teste les autorisations d'accès. en fonction de l'ID utilisateur réel et du groupe réel. Le prototype de la fonction est :
#include <unistd.h> int access(const char *pathname, int mode);
valeur du mode :
F_OK Tester si le fichier existe
R_OK Tester l'autorisation de lecture
W_OK Tester l'autorisation d'écriture
La fonction opendir est utilisée pour ouvrir un répertoire de fichiers et renvoie un pointeur en cas de succès ou NULL si une erreur se produit. La mise en œuvre est la suivante : (apprentissage recommandé :
tutoriel Linux
)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!