Copie de repertoires
isra
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en train d'essayer de coder un petit programme qui, à l'aide des fonctions opendir,readdir et closedir, copie un repertoire avec seulement des fichiers dedans. Le probleme ici est que la fonction copie_fichier fonctionne pour un fichier (sans compter le repertoire), mais quand je l'apelle dans la fonction copie_repertoire, cela ne fonctionne pas. Pourriez vous m'éclairer svp?
Voici mon code:
Je suis en train d'essayer de coder un petit programme qui, à l'aide des fonctions opendir,readdir et closedir, copie un repertoire avec seulement des fichiers dedans. Le probleme ici est que la fonction copie_fichier fonctionne pour un fichier (sans compter le repertoire), mais quand je l'apelle dans la fonction copie_repertoire, cela ne fonctionne pas. Pourriez vous m'éclairer svp?
Voici mon code:
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h> int copier_fichier(char *iname, char *oname){ int fdsource = open (iname, O_RDONLY); int fdcible = open (oname, O_WRONLY | O_CREAT | O_EXCL); while (1){ char buffer[4096]; int octets_lus = read(fdsource, buffer, sizeof(buffer)); struct stat istat; fstat(fdsource,&istat); //recuperer les permissions de fdsource fchmod(fdcible,istat.st_mode); //Les attribuer a fdcible if (octets_lus==0){ break; } else { write(fdcible, buffer, sizeof(buffer)); } } close(fdsource); close(fdcible); return 0; } int copier_repertoire(char *iname, char *oname){ DIR *repsource; DIR *repcible; struct dirent *dp; repsource = opendir(iname); repcible = opendir(oname); while ((dp=readdir(repsource)) != NULL) { copier_fichier("/home/isra/Bureau/TEST/*","/home/isra/Documents/TEST/*"); closedir(repsource); closedir(repcible); } } int main(int argc, char *argv[]){ copier_repertoire("/home/isra/Bureau/TEST/","/home/isra/Documents/TEST/"); }
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Copie de repertoires
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Copie rapide - Télécharger - Gestion de fichiers
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, pourquoi appelles-tu readdir, et que fais-tu avec le résultat?