Maison  >  Article  >  Opération et maintenance  >  Comment déterminer si un fichier existe sous Linux

Comment déterminer si un fichier existe sous Linux

尚
original
2019-12-13 10:08:495478parcourir

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 :

Comment déterminer si un fichier existe sous Linux

(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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn