Copie de repertoires
isra
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour, pourquoi appelles-tu readdir, et que fais-tu avec le résultat?