PDA

View Full Version : [C] Terminazione pulita di un thread alla ricezione di un segnale


lefantome
17-11-2010, 21:00
Allora ho un programma con due processi, capto un segnale sigint e setto una variabile globale loop =1.

Ora un thread é fatto cosė:

Thread A{
...
malloc varie
...

while(loop ==0)
{
...
malloc
...
fgets(stdin,&s,n); /* Attesa per l'input utente */
...
altre operazioni
...
}

pulizia ambiente
thread_exit();
}



Ora naturalmente il segnale viene sempre ricevuto tra il ciclo di loop con loop=0 e fgets,
cosė prima di terminare deve eseguire tutto il ciclo while.
Questo comportan che sia obbligato a inserire un input altrimenti il thread e di conseguenza il processo non termina(il processo attende la terminazione del thread con pthread_join() ).

Ora io non penso di poter usare pthread_kill() su questo thread perchč devo deallocare tutta la roba allocata ne thread etc..

Come posso fare?
:muro: :muro: :muro: