Faire un "ls" mais en C

Résolu
timy94 Messages postés 50 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 7 janvier 2009 - 7 juin 2006 à 11:31
timy94 Messages postés 50 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 7 janvier 2009 - 8 juin 2006 à 14:15
bonjour,

Je voudrais ecrire quelques lignes de codes pour remplacer la commande ls sous linux, pour me passer de la commande
system("ls"); qui ne renvoi que 0 ou 1. Je pourrai ecrire system("ls > titi); et lire le résultat dans titi. Mais mon intention est d'utiliser >>>>

int fd;
char chemin [BUFSIZ] = "/usr/local/qui/va/bien";
char nom     [BUFSIZ] = "";
if ((fd=open(chemin,O_RDONLY,0)==-1{
   printf("erreur");
} else {
   while(read(fd,(char *) &nom,BUFSIZ)>0) {
      printf("%s",nom);
    }
}

En fait read(fd,(char *) &nom,BUFSIZ) me renvoi toujours -1 et je ne fais jamais printf. L'ouverture avec open est bonne puisque le descripteur me renoi dans mon cas 8 et pas -1.

J'ai même utiliser la structure >>>>
 strcut direct [ino_t d_ino, char d_name[BUZSIZ]};
struct direct tamp_rep;
et la lecture read(fd,(char *) & tamp_rep,BUFSIZ) me renvoi encore -1.
 
J'ai essayer pas mal d'autre chause sur le mode d'écritue avec ou sans (char *) avec ou sans & rien y fait.

Merci d'avance!!

Timy94</gras>
A voir également:

9 réponses

fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
7 juin 2006 à 11:58
Bonjour,


En gros si j'ai bien compris tu voudrais parcourir l'arborescence d'un
répertoire et afficher des informations sur les fichiers ou répertoires
parcourrus.

Si c'est bien cela va voir le post que j'ai écrit ici
(http://www.siteduzero.com/forum-83-47155-373643.html#r373643), il
devrais répondre à une partie de ton problème.

Cordialement

Fred Cailleau-Lepetit
Soft In The Box
Forum wxWidgets en français
3
Rejoignez-nous