Est-il possible d'intercepter le signal Ctrl+C (SIGINT) et d'exécuter une fonction de nettoyage, comme avec defer ?
Bonjour à tous ! J'écris un petit serveur HTTP en Go qui traite les requêtes et sauvegarde les données dans un fichier. Lorsque je lance le serveur et que j'appuie sur Ctrl+C, le programme se termine instantanément et le fichier de données reste dans un état incomplet. Je souhaite qu'à la réception de SIGINT (Ctrl+C), une fonction de nettoyage soit d'abord exécutée (par exemple, flush des données sur le disque et fermeture des fichiers), puis seulement ensuite le programme se termine.
Je connais `defer` — il fonctionne parfaitement lorsque la fonction se termine normalement ou via `return`. Mais si j'appuie sur Ctrl+C, `defer` ne s'exécute pas, car le programme est simplement tué par le signal.
Est-il possible d'intercepter ce signal et d'exécuter une logique de nettoyage dans le style de `defer` ? Pour éviter d'écrire des bricolages avec des vérifications manuelles de flags. Voici un exemple de mon code :
```go
package main
import (
"fmt"
"log"
"net/http"
"os"
"os/signal"
"syscall"
)
func main() {
// Ouvrir un fichier pour les logs
f, _ := os.Create("server.log")
defer f.Close()
http