Maison > développement back-end > C++ > Comment vérifier l'existence d'un répertoire sous Unix à l'aide d'appels système ?

Comment vérifier l'existence d'un répertoire sous Unix à l'aide d'appels système ?

Barbara Streisand
Libérer: 2024-11-07 13:09:03
original
958 Les gens l'ont consulté

How to Check Directory Existence in Unix Using System Calls?

Vérification de l'existence d'un répertoire sous Unix : un guide complet à l'aide des appels système

Problème :

Sous Unix, comment peut-on déterminer l'existence d'un répertoire à l'aide d'un appel système sans l'ouvrir ni gérer les erreurs associées ?

Réponse :

Les systèmes POSIX fournissent deux fonctions essentielles à cet effet : stat( ) et lstat(). Ces fonctions vous permettent de vérifier si un nom de chemin reflète un objet accessible valide et de récupérer des informations sur son type.

Différences clés entre stat() et lstat() :

  • stat() : suit les liens symboliques et fournit des informations sur la destination finale.
  • lstat() : fournit des informations sur le lien symbolique lui-même, quelles que soient les cibles vers lesquelles il peut pointer.

Implémentation à l'aide de stat() :

#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode)) {
    // True if pathname is a directory
}
Copier après la connexion

Vérification supplémentaire du type de fichier :

Utilisation des macros S_IS* de < sys/stat.h>, vous pouvez vérifier d'autres types de fichiers au-delà des répertoires :

  • S_ISREG : fichier normal
  • S_ISCHR : périphérique de caractères
  • S_ISBLK : périphérique de blocage
  • S_ISFIFO : FIFO
  • S_ISLNK : Lien symbolique
  • S_ISSOCK : Prise

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal