Bonjour,
Bon alors pour expliquer un peu le problème qui m'amène.
En gros j'ai un code en C contenant une boucle créant plusieurs threads en leur donnant une fonction à éffectuer.
Mon problème est que dans cette fonction je dois faire un appel à gcc, et donc j'utilisais exec...
Mais voilà, avec exec je perd la main et ma boucle sencée créer plusieurs threads s'arrête lorsque qu'un exec a été effectué par un thread.
J'ai cherché un peu et j'ai trouvé la commande system utilisable et qui ne me ferait pas perdre la main, mais elle me pose également un problème c'est qu'il n'y a aucune valeur de retour, hors il me faudrait un retour sur les éventuels problèmes rencontrés par gcc...
Donc voilà, je sais pas si c'est clair, en gros il me faudrait soit un moyen d'avoir un retour avec system, soit de ne pas perdre la main avec exec, ou encore une 3ème commande qui irait
Je vous met ce que donne mon code en gros pour que vous ayiez une idée de la chose :
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 void *compile(char *nom_fichier) { execlp("gcc", "gcc", "-c", nom_fichier, NULL); exit(0); } int main(int argc, char *argv[]) { int i; pthread_t pthread_id[argc]; for(i=1 ; i<argc ; i++) { if(pthread_create(&pthread_id[i-1], NULL, (void *)compile, argv[i]) == -1) { printf("Erreur à la création du thread"); exit(-1); } } for(i=1 ; i<argc ; i++) { pthread_join(pthread_id[i-1], NULL); } return(0); }
Voilà merci à ceux qui pourront m'aider, je précise que ce n'est pas la peine de revoir mon code sur l'utilité de l'utilisation de threads et autre vu que je n'ai pas le choix du sujet ^^
Partager