Fonction GetCWD dans le langage C

Fonction GetCWD dans le langage C

La configuration d'un répertoire fonctionnel à partir du répertoire racine Linux ouvre la possibilité d'accéder et de travailler avec l'ensemble de la structure de fichiers dans les différents dossiers du système et des utilisateurs.

Le langage C fournit la fonction chdir () pour configurer un répertoire de travail et a également une fonction pour interroger le répertoire dans lequel vous travaillez.

Dans cet article de Linux Hint, vous apprendrez à utiliser la fonction getCWD () pour interroger le répertoire dans lequel vous travaillez actuellement. Nous expliquerons le fonctionnement théorique de cette fonction, sa syntaxe, les types de ses arguments d'entrée et de sortie et chaque type de données.

Pour utiliser cette fonction de manière pratique, nous appliquerons tout ce que nous avons appris à travers un exemple pratique où vous apprenez étape par étape sur la façon d'utiliser cette fonction pour récupérer le répertoire de travail actuel.

Syntaxe de la fonction getCWD () dans le langage C

char * getcwd (char * buf, size_t size);

Description de la fonction getCWD () dans le langage C

La fonction getCWD () interroge le répertoire de travail actuel du programme ou du processus d'appel. Cette fonction renvoie le pointeur vers un tableau de caractères «buf de taille» qui contient une chaîne avec le chemin absolu du répertoire de travail actuel.

Si l'appel à la fonction getcwd () est réussi, il renvoie le pointeur à la chaîne avec le chemin du répertoire de travail. Si une erreur se produit, le résultat est un pointeur nul. Dans ce cas, le code d'identification d'erreur est automatiquement stocké dans la variable globale Errno.

La déclaration de la variable Errno et les définitions des codes d'erreur sont dans le «errno.en-tête h ”. Dans l'exemple suivant, nous verrons une section spéciale qui explique comment détecter et identifier les erreurs.

La fonction getCWD () est définie dans le «Unistd.en-tête h ”. Pour l'utiliser, nous devons l'inclure dans notre «.Fichier C ”comme suit:

#inclure

Comment interroger le répertoire de travail actuel avec la fonction getCWD () dans la langue C

Dans cet exemple, nous expliquerons comment récupérer le répertoire de travail actuel et l'afficher dans la console de commande.

La première étape pour ce faire consiste à inclure les en-têtes nécessaires. Dans ce cas, ils sont les «Unistd.h ”et« stdio.Fichiers h ”. Ensuite, nous ouvrons une fonction Main () qui renvoie une valeur de retour vide et dans laquelle nous déclarons un chemin de tableau avec 128 éléments de type de type. Dans ce tableau, la fonction getCWD () stocke la chaîne avec le répertoire.

Une fois les variables nécessaires déclarées, nous appelons la fonction getCWD (). Nous passons l'argument d'entrée «buf» comme pointeur vers le chemin du tableau et la taille du tampon comme taille d'argument, comme 128 dans ce cas.

Ensuite, en utilisant la fonction printf (), nous imprimons le message «Le répertoire réel est:» suivi du chemin du répertoire qui est renvoyé par la fonction getCWD (). Voici le code complet de cet exemple:

#inclure
#inclure
vide main ()

Chemin de charbon [128];
getCWD (Path, 128);
printf ("\ n \ n le répertoire réel est:% s \ n", path);

Ensuite, nous voyons une image avec la compilation et l'exécution de ce code. Dans ce cas, GetCwd () renvoie le chemin absolu du répertoire domestique de l'utilisateur en session:

Le même pointeur que GetCwd () revient dans l'argument «BUF» renvoie le résultat suivant:

pointeur vers buff = getCWD (pointeur vers buff, taille);

Cela permet à la fonction getCWD () d'être appelée à partir des arguments d'entrée d'une autre fonction. Le code suivant montre l'appel des arguments d'entrée de printf ():

#inclure
#inclure
vide main ()

Chemin de charbon [128];
printf ("\ n \ n le répertoire réel est:% s \ n", getcwd (path, 128));

Dans ce cas, printf () emmène le pointeur vers la chaîne qui est renvoyée par getCWD () et l'imprime sur la console de commande avec une seule ligne de code.

L'image suivante montre que cette méthode a le même effet que le programme dans l'exemple précédent:

Erreurs lors de l'utilisation de la fonction getCWD (): comment les détecter et les identifier

Si une erreur se produit lors de l'appel de la fonction getcwd (), il renvoie un pointeur nul en conséquence. La façon la plus simple de détecter une erreur est d'utiliser une condition «IF» où la condition d'entrée est déterminée par un résultat égal à Null. Ce qui suit est un extrait de code qui utilise cette méthode de détection d'erreur:

if (getCwd (chemin, 128) == null)

printf ("Une erreur s'est produite dans l'appel de fonction getCWD ().\ n ");

Lorsqu'une erreur se produit, un code numérique qui l'identifie est automatiquement stocké dans la variable globale Errno qui est déclarée dans le «errno.en-tête h ”.

Cet en-tête définit également les codes d'erreur et leur représentation numérique.

Vous pouvez voir les erreurs que la fonction getCWD () peut générer, leur représentation numérique qui est renvoyée dans la variable Errno et une brève description de chacun:

Définition Valoriser errer Description
Ennoent 2 Aucun fichier ou répertoire de ce nom.
Eacces 13 Permission refusée
Efault 14 Mauvaise adresse.
Einval 22 Argument invalide.
Enametoolong 36 Nom de fichier ou chemin trop long.

La façon la plus simple d'identifier une erreur est d'ouvrir un commutateur conditionnel où la condition de saut est la variable globale Errno et chaque cas est une définition d'erreur. Nous voyons le code de cette méthode de détection dans ce qui suit:

if (getCwd (chemin, 128) == null)

commutateur (errno)
case einval:
printf ("argument non valide.\ n ");
casser;
Case Efault:
printf ("mauvaise adresse.\ n ");
casser;
case enoent:
printf ("Aucun fichier ou répertoire de ce type.\ n ");
casser;

Les variables et les codes d'erreur sont définis dans le «errno.en-tête h ”. Pour les utiliser, nous devons les inclure dans notre «.Fichier C ”comme suit:

#inclure

Conclusion

Dans cet article de Linux Hint, nous avons expliqué comment utiliser la fonction getCWD () pour déterminer le répertoire de travail actuel du programme d'appel.

Nous avons examiné une section théorique sur cette fonction, quels sont ses arguments d'entrée et de sortie et quel type de données il utilise. Ensuite, nous avons appliqué ce que nous avons appris à travers les exemples pratiques avec des images et des extraits de code qui montrent comment déclarer les variables nécessaires et appeler la fonction getCWD ().

Nous avons également inclus une section spéciale où nous énumérons les différentes erreurs que cette fonction peut générer et expliquer comment les détecter.