Gets() marche plus apres fermeture de thread

dyroj Messages postés 123 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 18 juin 2012 - 21 avril 2009 à 16:01
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 22 avril 2009 à 15:53
bonjour,


est-il normale que fgets() block quand on lapele plus dune foi,




//envoi en mode tcp





WINAPI Tsend_ms_t(LPVOID lpvoid)


{








char

buffer[1024];inf = 1;



while

(inf){

memset(buffer,0,



sizeof

(buffer));


//efface le buffer


fgets(buffer,





sizeof

(buffer), stdin);



if

(send(client, buffer, Ssize(buffer), 0) <0)inf 0;

}

}

pour lapeler :

Hsend = CreateThread(NULL, 0, Tsend_ms_t, NULL, 0, &idt);



et pour le quitter :
TerminateThread(Hsend, 0);

CloseHandle(Hsend);

et je ne peut pas lapeler plus dune foi sinon il recupere plus de caractaire
++

5 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 avril 2009 à 14:34
Salut,

Aucun souci avec le code suivant sous VC6 :
<hr size="2" width="100%" />#include <windows.h>
#include
#include <stdio.h>

using namespace std;

int inf;

DWORD __stdcall Tsend_ms_t(LPVOID lpvoid)
{
  char buffer[1024];

  while (1)
  {
    memset(buffer,0, sizeof (buffer));
    fgets(buffer, sizeof (buffer), stdin);
    printf(buffer);
  }

  return 0;
}

int main()
{
  HANDLE Hsend;
  int i;

  for (i = 0; i < 2; i++)
  {
    printf("\n=========== Thread %d ================\n", i + 1);

    Hsend = CreateThread(NULL, 0, Tsend_ms_t, NULL, 0, NULL);

    Sleep(10000);

    TerminateThread(Hsend, 0);
 
    CloseHandle(Hsend);
  }

  return 0;
}
0
dyroj Messages postés 123 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 18 juin 2012
22 avril 2009 à 14:50
et bah moi je vien dessayer le meme code que toi sous vc++ 2008 et sa marche pas.
a la 1ere thread je peut ecrir.
a la 2 eme plus rien c en attente c tou.
a ton avi ca vien de vc2008
on ma dis que la fonction fflush () pourai maider mais je ne voi pas comment?
merci sinon de ton aide ++
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 avril 2009 à 15:03
Peut être un problème de CRT/Thread. Regarde ces options de compilation.
0
dyroj Messages postés 123 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 18 juin 2012
22 avril 2009 à 15:14
je vien desayer le code sous dev cpp et il marche toujour pas
c bizare que chez toi sa marche.
ton code tu c du c++?
car moi c du C.
peut etre que sa un raport
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 avril 2009 à 15:53
Marche aussi en C sous VC6. Marche effectivement pas sous gcc...

Peut être que c'est ça le problème. Mais les fonctions ne sont pas dispo sous windows, même avec du pthread pour win32.

ReadConsole ?
0
Rejoignez-nous