Salve, io sto sviluppando un sistema client/server in C con i pthread (<pthread.h>)
il punto è che i miei thread devono gestire i segnali per essere terminati gentilmente, ovvero che se un thread deve essere terminato, prima si provi a terminarlo con un SIGINT o un SIGTERM, in modo che tale thread, tramite un handler, possa gestire la terminazione come meglio crede
Ora, se io voglio fare una cosa del genere, utilizzo
struct sigaction {
void (*sa_handler) (int);
sigset_t sa_mask;
int sa_flags;
};
poi setto il tutto con
struct sigaction s;
s.sa_handler=MIOHANDLER;
sigaction(SIGINT,&s,NULL);
il punto è: io sono un thread, e voglio crearmi un handler. Tale handler dovrà avere la forma "static void handler(int signum)", dove signum rappresenta il segnale che ho ricevuto. Ma come faccio io, in una funzione esterna, a lavorare nelle mie variabili che ho allocato dentro il mio thread? Io voglio poter accedere alle variabili che ho nel programma e "ripulire da allocazioni", fare varie free...
come funziona? cosa devo fare? Grazie per chi può aiutarmi, ogni dritta (anche generica sugli handler) è ben accetta ^^