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.
Les copies ont bien lieu mais je ne comprends pas bien le retour qu'il me fait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Pourquoi revient-il dans le main tant qu'il n'a pas fini?./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
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?
Partager