in main.go [154:172]
func installSignalHandlers(ctx context.Context, m *firecracker.Machine) {
go func() {
// Clear some default handlers installed by the firecracker SDK:
signal.Reset(os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)
for {
switch s := <-c; {
case s == syscall.SIGTERM || s == os.Interrupt:
log.Printf("Caught signal: %s, requesting clean shutdown", s.String())
m.Shutdown(ctx)
case s == syscall.SIGQUIT:
log.Printf("Caught signal: %s, forcing shutdown", s.String())
m.StopVMM()
}
}
}()
}