View Single Post
Old 09-12-2010, 00:22   #1
lefantome
Member
 
Iscritto dal: Dec 2007
Messaggi: 284
[C] Printf printfa quando gli pare

Allora ho questo scenario:

-2 programmi: 1 server e 1 client che si scambiano messaggi vari

-Il client ha 2 thread: uno che gestisce l'input da tastiera e invia i messaggi e uno che li riceve e li stampa utilizzando un socket di connessione.

Ora utilizzando uno script bash faccio inviare vari messaggi al server destinati allo stesso client e stampo il risultato su un file (ridirezione output tramite script bash)

Ora testando il server so che i messaggi gli arrivano e li invia, il problema é che abbastanza spesso, eseguendo sempre lo stesso script i messaggi non arrivano o arrivano in maniera parziale, mentri in altri casi tutto ok.

é un problema di fflush? non so come fare. Non penso ci siano race condition nel client.

Spoiler:
Codice:
/**=====================================Thread In=================================== */

void* in(void* arg){

info* inf = (info*)arg;
int* fd = inf->fd;


message_t* msg;
msg = (message_t*)malloc(sizeof(message_t));

while (msg->type != MSG_OK) /* quando riceve MSG_OK significa che aveva inviato un MSG_EXIT al server quindi chiude tutto */
{
	
		/** IF AVAILABLE INPUT? */
		if (*inf->av_inputrd == 1)
		{
		receiveMessage(*fd,msg);
		
		if (msg->length >0){printf ("%s\n",msg->buffer);
		free(msg->buffer);}
		*inf->av_inputrd =0;
		}
		

}


/** Ripulire ambiente */
free(msg);
/*printf("Thread READER chiuso\n");*/

pthread_exit(0);

}
lefantome è offline   Rispondi citando il messaggio o parte di esso