Avatar ·

Comment intercepter Ctrl+C (SIGINT) et effectuer un nettoyage des ressources en Go, comme avec defer ?

Bonjour à tous ! J'écris une application serveur en Go qui ouvre des connexions TCP, travaille avec des fichiers et une base de données. J'ai besoin qu'en appuyant sur Ctrl+C (signal SIGINT), le programme se termine correctement : ferme les connexions, sauvegarde les données, libère les ressources. Je connais `defer` — il fonctionne parfaitement en cas de terminaison normale d'une fonction. Mais quand j'appuie sur Ctrl+C, le programme est simplement tué, et `defer` ne s'exécute pas. Par exemple : ```go func main() { db, _ := sql.Open("postgres", "...") defer db.Close() // une boucle infinie for { // on travaille } } ``` En appuyant sur Ctrl+C, `defer db.Close()` ne s'exécute pas. J'ai lu sur le package `os/signal`, mais je ne comprends pas comment organiser un comportement "similaire à defer". Comment faire pour que, quelle que soit la