Salut tout le monde !
Dans un petit executable de test (en C sous Windows 2000), je lance un thread. (le pointeur de fonction lancé par le thread ouvre et ecrit betement une ligne dans un fichier).
Mon executable doit etre asynchrone, en gros je lance la fonction et je me fiche de son résultat.
ex :
Le truc, c'est que le thread est bien lancé (renvoie 0), mais rien est écrit dans mon fichier.
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 main() { .... status = u_create_thread(uxupd_post_message,p_data); /* Lancement du thread échoué */ if (status != 0) { fprintf(stdout,"Launch thread to post message failed (status = %d)\n",status); } exit (0); } /* ------------------------------------------- */ /* Fonction uxupd_post_message */ /* ------------------------------------------- */ /* Pointeur de fonction permettant d'etre*/ /* lancé dans un thread */ /* ------------------------------------------- */ void *uxupd_post_message(struct UXCCMS_DATA *p_data) { char *trace = "c:\\temp.log"; FILE *file; LPTSTR lpt; DWORD word; lpt = GetCommandLine(); word = GetCurrentProcessId(); file = fopen(trace,"a+t"); if (file != (FILE *)0 ) { fprintf(file,"pid=%d et command=%s\n",word,lpt); fclose(file); } return NULL; }
Par contre, quand je rajoute un Sleep(1000) après ma fonction u_create_thread, l'ecriture dans le fichier se fait bien
Mon thread n'a pas le temps d'ecrire dans le fichier, parce que le programme principale se termine trop tot ?
Normalement, le thread est lancé dans un process a part non ? alors il est indépendant du programme principale normalement. Je peux en sortir quand je veux....
mhhhh...
Quelqu'un peut me dire ce qui ne vas pas ou me dire comment contourner ce pb.
Dois-je faire de mon thread un autre exe et faire un execvp (sans wait) de cet exe ?
Merci de m'aider.
Fifouille
Partager