27 Débogage de getcwd

avant-propos

C'est aussi une fonction de la bibliothèque glibc très couramment utilisée 

Qu'il s'agisse du code métier de l'utilisateur ou du code de nombreuses bibliothèques de classes, il sera essentiellement utilisé pour obtenir le chemin actuel  

Mais ici, nous regardons la mise en œuvre spécifique 

cas de test

Utilisez simplement getcwd  

root@ubuntu:~/Desktop/linux/HelloWorld# cat Test04Getcwd.c 
#include "stdio.h"
 
int main(int argc, char** argv) {
 
int x = 2;
int y = 3;
int z = x + y;
 
char* p1 = (char*) malloc(40);
printf("p1 : 0x%x\n", p1);

getcwd(p1, 100);
int p1Len = strlen(p1); 

printf(" p1 = %s, p1Len = %d\n ", p1, p1Len);
 
}

Implémentation de getcwd

Confirmez d'abord la position du point d'arrêt, l'appel de fonction de getcwd dans main 

L'implémentation de getcwd est la suivante 

Le traitement par défaut est directement basé sur l'appel système getcwd 

Si le nom est trop long, obtenez le chemin actuel basé sur generic_getcwd 

generic_getcwd est basé sur le système de fichiers proc et obtient le cwd stocké dans le processus en cours sous le système de fichiers proc 

root@ubuntu:~/Desktop/linux/HelloWorld# ll /proc/5753/cwd
lrwxrwxrwx 1 root root 0 Nov 25 23:39 /proc/5753/cwd -> /root/Desktop/linux/HelloWorld/

appel système getcwd

L'appel système getcwd est le suivant, où le chemin actuel est "/jerry/dir" 

Le disque dur "/dev/sda1" est monté sur "/jerry"

Le traitement ici est que le dentry du chemin actuel commence à traverser vers le haut jusqu'à ce qu'il atteigne le nœud racine 

Ensuite, sortez cette série de chemins vers le tampon 

sur

Je suppose que tu aimes

Origine blog.csdn.net/u011039332/article/details/128052656
conseillé
Classement