Récursivité et fils en parallèle
Bonjour,
je dois développer un programme qui exécute la copie de fichiers en parallèle (avec des processus fils et non des threads). Ca fonctionne couci-couca, étant donné que ce sont des relations père-fils, je ne peux pas utiliser de boucle mais une récursivité, si je ne me trompe pas?
Donc en gros, l'utilisateur lancera le programme: ./copie texte1.txt texte2.txt texte3.txt
Le premier fils s'occupe de la copie du fichier texte1.txt, le 2ème texte2.txt,...
Tous utilisent la fonction copie.
Code:
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
| int traitement(int debut,int argc, char *argv[]){
int p = fork();
if (p == -1){
perror("Erreur de fork()");
}
if (p == 0){
printf("%d %s\n",debut,argv[debut]);
copie(argv[debut]);
}
else{
debut ++;
if (debut < argc){
traitement(debut,argc,argv);
}
else{
return 0;
}
}
return -1; //erreur
}
int main(int argc, char * argv[]){
if (argc <= 2){
perror("Entrez au moins un argument!");
}
else{
if (traitement(1,argc,argv) ==0 ){
wait(0);
}
else{
perror("Erreur de traitement");
return -1;
}
}
return 0;
} |
Les copies ont bien lieu mais je ne comprends pas bien le retour qu'il me fait:
Citation:
./ex2 texte.txt texte2.txt texte3.txt
1 texte.txt
2 texte2.txt
Erreur de traitement: Success
3 texte3.txt
Erreur de traitement: Success
Erreur de traitement: Success
Erreur de traitement: Success
Pourquoi revient-il dans le main tant qu'il n'a pas fini?
Merci d'avance :)
Edit: en fait j'ai compris, c'est le return -1 quand le fils s'exécute. Où pourrais-je mettre ce retour d'erreur ? Est-ce que ce code est acceptable?