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