Maison  >  Article  >  Opération et maintenance  >  Comment vérifier si un répertoire de fichiers existe sous Linux

Comment vérifier si un répertoire de fichiers existe sous Linux

青灯夜游
青灯夜游original
2022-03-21 13:02:498986parcourir

Méthode View : 1. Utilisez la fonction stat series, si elle existe, retournez les informations structurelles liées au fichier ; 2. Utilisez la fonction d'accès, la syntaxe « access (chemin du répertoire du fichier, F_OK) » ; Fonction oepndir, si elle existe Renvoie un pointeur, ou NULL s'il n'existe pas.

Comment vérifier si un répertoire de fichiers existe sous Linux

L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.

Linux vérifie si le répertoire de fichiers existe

1. Fonctions de la série stat

 La fonction stat est utilisée pour renvoyer des informations structurelles liées aux 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.

Les fonctions de la série stat renvoient -1 en erreur. Le code d'erreur est stocké dans errno La valeur de errno est la suivante :

ENOENT 参数file_name 指定的文件不存在
ENOTDIR 路径中的目录存在但却非真正的目录
ELOOP 欲打开的文件有过多符号连接问题, 上限为16 符号连接
EFAULT 参数buf 为无效指针, 指向无法存在的内存空间
EACCESS 存取文件时被拒绝
ENOMEM 核心内存不足
ENAMETOOLONG 参数file_name 的路径名称太长

2. La fonction d'accès teste les droits d'accès en fonction de l'ID utilisateur réel. et le groupe réel. Le prototype de la fonction est :

#include <unistd.h>
int access(const char *pathname, int mode);

valeur de mode :

F_OK Teste si le fichier existe
  • R_OK Teste l'autorisation de lecture
  • W_OK Teste l'autorisation d'écriture
  • X_OK Teste l'autorisation d'exécution
  • Correct jugement Le fait qu'un fichier existe ou non est déterminé par la fonction d'accès, qui est implémentée comme suit :

3. Fonction oepndir

La fonction opendir est utilisée pour ouvrir le répertoire du fichier et renvoie un pointeur en cas de succès et. NULL en cas d'erreur. La mise en œuvre est la suivante :

Recommandations associées : "Tutoriel vidéo 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