|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2010
Messaggi: 10
|
Gestione di SIGTERM e SIGINT per terminazione "gentile" di un server multithreaded.
Salve a tutti quanti...
chiedo un parere/consiglio/aiuto a qualche anima buona che sappia aiutarmi a gestire al meglio la situazione accennata nel titolo. Sto programmando in C e sto, appunto, creando un server multithreaded i cui thread worker vengono creati ad ogni connessione in ingresso e ciascuno destinato a gestire ogni client, fino alla loro disconnessione oppure fino alla terminazione del server. In quest'ultimo caso, appunto, devo poter gestire segnali di SIGINT o SIGTERM inviati al processo: deve essere una terminazione "gentile" nel senso che tutti i thread worker devono poter gestire richieste pendenti dai client, prima di terminare. Ecco... non riesco a pianificare una buona strategia per implementare tutto ciò. Non so se creare un thread handler dove attendere i segnali con una sigwait().. non capisco se alla ricezione dei segnali devo comunque inviare un'interruzione a ciascun worker con una pthread_kill()... se devo poi attenderli con la pthread_join() o non è necessario... insomma, sono un pò confuso.. Qualche goog boy sa darmi dei consigli risolutivi? Grazie in anticipo a chi mi saprà rispondere. Gabriele |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Dec 2007
Messaggi: 121
|
Penso che questo faccia al caso tuo:
http://www.cons.org/cracauer/sigint.html Appena trappi il sigint/sigterm, joina i thread e poi killa il processo. Se guardi il link che ti ho indicato noterai che all'inizio parla di shell.. scorri in basso e troverai le operazioni C. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:52.



















