Non ba ca a pas l'air de marcher, puis maintenant que je verifie le retour de stats il me lache une jolie erreur apres avoir lu dans le dossier le fichier
.
..
Donc il me dit bien a qui appartient . (Quoi que jsuis pas sur qu'il m'appartienne) et .. mais apres les autres fichiers nada ya une erreur.
Apres verification, si ils m'appartiennent
drwxr-xr-x 3 mon_login rendu 512 Nov 30 03:22 .
drwx------ 4 mon_login rendu 512 Nov 30 11:32 ..
-rw-r--r-- 1 mon_login rendu 4 Nov 29 17:07 c
-rw-r--r-- 1 mon_login rendu 5 Nov 29 17:07 d
-rw-r--r-- 1 mon_login rendu 3 Nov 29 17:07 l
drwxr-xr-x 2 mon_login rendu 512 Nov 29 11:48 tmp
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <grp.h>
#include <pwd.h>
#include <sys/dir.h>
#include <dirent.h>
void read_folder(DIR *dir)
{
#define S_ISUID 0004000 /* set user id on execution */
#define S_ISGID 0002000 /* set group id on execution */
struct dirent *d;
struct stat stats;
struct group *g;
struct passwd *pwd;
while (d = readdir(dir))
{
if (stat(d->d_name, &stats) != 0)
{
printf("%d", stat(d->d_name, &stats));
printf ("erreur\n");
exit (-1);
}
g = getgrgid(stats.st_gid);
pwd = getpwuid(stats.st_uid);
printf("~~ Variables de stat sur %s ~~ \n\n", d->d_name);
printf("-Peripherique: %d\n", stats.st_dev);
printf("-Numero I-Noeud: %d\n", stats.st_ino);
printf("-Modes: %o\n", stats.st_mode);
printf("-Nb Liens materiels: %d\n", stats.st_nlink);
printf("-UID: %s\n", pwd->pw_name);
printf("-GID: %s\n\n", g->gr_name);
}
}
int main(int argc, char **argv)
{
static DIR *dir;
if (argc != 2)
{
printf("Comment on m'utilise ?\n%s dossier", argv[0]);
exit(1);
}
if ((dir = opendir(argv[1])) == NULL)
{
printf("Probleme avec Opendir.");
exit(1);
}
read_folder(dir);
closedir(dir);
}
[^] # Re: Et sans getgr[ug]id ?
Posté par geozzz . En réponse au message Un probleme sur mon code. Évalué à 1.
#include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <unistd.h> #include <grp.h> #include <pwd.h> #include <sys/dir.h> #include <dirent.h> void read_folder(DIR *dir) { #define S_ISUID 0004000 /* set user id on execution */ #define S_ISGID 0002000 /* set group id on execution */ struct dirent *d; struct stat stats; struct group *g; struct passwd *pwd; while (d = readdir(dir)) { if (stat(d->d_name, &stats) != 0) { printf("%d", stat(d->d_name, &stats)); printf ("erreur\n"); exit (-1); } g = getgrgid(stats.st_gid); pwd = getpwuid(stats.st_uid); printf("~~ Variables de stat sur %s ~~ \n\n", d->d_name); printf("-Peripherique: %d\n", stats.st_dev); printf("-Numero I-Noeud: %d\n", stats.st_ino); printf("-Modes: %o\n", stats.st_mode); printf("-Nb Liens materiels: %d\n", stats.st_nlink); printf("-UID: %s\n", pwd->pw_name); printf("-GID: %s\n\n", g->gr_name); } } int main(int argc, char **argv) { static DIR *dir; if (argc != 2) { printf("Comment on m'utilise ?\n%s dossier", argv[0]); exit(1); } if ((dir = opendir(argv[1])) == NULL) { printf("Probleme avec Opendir."); exit(1); } read_folder(dir); closedir(dir); }