Bonjour,
Je me poses 2 questions sur le fonctionnement de stat.
Mon but en gros est de recuperer les infos contenus dans cette structure apres son appel sur un fichier / dossier, voici un bout de code pour etre plus clair :
Alors 2 choses, vous vous demanderez probablement pourquoi je n'ai pas verifie la valeur de retour de stat, simplement parcequ'elle me renvoie -1 (son code d'erreur presque tout le temps) alors que l'affichage sans ce test est parfait (et on en vient au second soucis) UNIQUEMENT dans le dossier courrant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 int main(int argc, char **argv) { DIR *d; struct stat st; struct dirent *dir; if (!(d = opendir(argv[1]))) { my_printf(ERR_OPDIR); return (-1); } while ((dir = readdir(d))) { stat(dir->d_name, &st); display_type(st.st_mode); display_perm(st.st_mode); display_oth(&st); display_time(&st); my_printf("%s\n", dir->d_name); } closedir(d); return (0); }
Si j'appelle mon programme en lui envoyant comme chemin "." ca marche tres bien, en revanche pas question de lui envoyer un chemin absolue du genre /u/all sans avoir divers problemes :
-le code de retour est toujours negatif malgre l'affichage a peu pres correct si on le passe outre.
-certaines des infos, comme le poids et le nombre de liens sont erronees sur un chemin absolue et je ne comprends pas pourquoi.
Voila une fois de plus je ne demande aucun code mais simplement un explication theorique sur comment marche stat plus precisement et pourquoi il ne marche pas sur un repertoire distant.
Cordialement.
Partager