¿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
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Programación asíncrona en Swift: guía completa con ejemplos