1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
//#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
int main(int argc,char **argv){
DIR *repertoire;
char nnam[50],nnam2[50];
struct stat *buff;
struct dirent *fich;
int i=1,j=0,*k;
if(argc!=2){
printf("erreur123\n");
exit(0);
}
stat(argv[1],buff);
if(S_ISREG(buff->st_mode)!=0){
printf("L'argument passé est un fichier\n");
exit(1);
}
if(S_ISDIR(buff->st_mode)==0){
printf("erreur ni fichier ni dosier\n");
exit(2);
}
strcpy(nnam,argv[1]);
strcpy(nnam2,argv[1]);
repertoire=opendir(argv[1]);
printf("c un dosier de chemin:%s\n",nnam);
//fich=readdir(repertoire);//test
//printf("nom fichier: %s\n",fich->d_name);//test
while((fich=readdir(repertoire))!=NULL){
strcat(nnam,"/");
printf("ca marche\n");
strcat(nnam,fich->d_name);
if(S_ISREG(buff->st_mode)!=0) { //si c'est un fichier
printf("le fichier: %s se trouve dans le repertoire",fich->d_name);
strcat(nnam,nnam2);//annuler la concatenation
}
if(S_ISDIR(buff->st_mode)!=0){ //si c'est un repertoire
if(fork()==0){
//strcat(repertoire,"/");
//strcat(repertoire,fich->name);
//*repertoire=fiche->name;
repertoire=opendir(nnam);
printf("je suis dans le repertoire %s\n",nnam);
strcpy(nnam2,nnam);
i++;
}
else{
while((j=wait(k))==-1)
sleep(1);// attend la fin de processus fils
}
}
}
closedir(repertoire);
printf("Fin\n");
return 0;
} |
Partager