Avatar ·

¿Se puede interceptar la señal Ctrl+C (SIGINT) y ejecutar una función de limpieza, como con defer?

¡Hola a todos! Estoy escribiendo un pequeño servidor HTTP en Go que procesa solicitudes y guarda datos en un archivo. Cuando ejecuto el servidor y presiono Ctrl+C, el programa termina instantáneamente y el archivo con datos queda en un estado incompleto. Quiero que al recibir SIGINT (Ctrl+C), primero se ejecute una función de limpieza (por ejemplo, hacer flush de los datos al disco y cerrar archivos), y solo después el programa termine. Conozco `defer` — funciona muy bien cuando la función termina normalmente o con `return`. Pero si presiono Ctrl+C, `defer` no se ejecuta porque el programa simplemente es eliminado por la señal. ¿Se puede interceptar esta señal y ejecutar lógica de cleanup al estilo de `defer`? Para no escribir parches con verificación manual de flags. Aquí hay un ejemplo de mi código: ```go package main import ( "fmt" "log" "net/http" "os" "os/signal" "syscall" ) func main() { // Abrimos archivo para logs f, _ := os.Create("server.log") defer f.Close() http