Vérification de l'existence d'un répertoire sous Unix : utilisation des appels système stat() et lstat()
Déterminer si un répertoire spécifique existe est une tâche courante en programmation Unix. Bien que des fonctions comme opendir() puissent indiquer la présence d'un répertoire via la gestion des erreurs, ce n'est peut-être pas l'approche idéale pour simplement vérifier l'existence. Cet article présente des moyens efficaces d'accomplir cette tâche à l'aide des appels système stat() et lstat().
stat() et lstat()
Le stat() et les fonctions lstat() fournissent des informations précieuses sur l'existence et le type d'un fichier en fonction de son chemin d'accès. Contrairement à opendir(), ces fonctions n'ouvrent pas le fichier mais collectent plutôt des données sur ses attributs. La principale différence entre stat() et lstat() réside dans la façon dont ils gèrent les liens symboliques.
Pour vérifier si un fichier est un répertoire, la macro S_ISDIR() est utilisée en conjonction avec stat() ou lstat(). L'extrait de code suivant démontre son utilisation :
#include <sys/stat.h> struct stat sb; if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode)) { // Directory exists and is accessible }
Vérifications supplémentaires du type de fichier
Outre les répertoires, divers autres types de fichiers peuvent être vérifiés à l'aide de macros S_IS* spécifiques. Voici une liste complète :
La compréhension de ces macros permet des vérifications polyvalentes du type de fichier dans vos programmes Unix.
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!