close.go 377 B

12345678910111213141516171819202122232425
  1. package utils
  2. import (
  3. "fmt"
  4. "os"
  5. "os/signal"
  6. "syscall"
  7. )
  8. func closeHandler(closer func() error) {
  9. sig := make(chan os.Signal)
  10. signal.Notify(sig, os.Interrupt, syscall.SIGTERM)
  11. go func() {
  12. <-sig
  13. err := closer()
  14. if err == nil {
  15. fmt.Println("shutdown successful")
  16. os.Exit(0)
  17. }
  18. fmt.Printf("shutdown unsuccessful: %s\n", err.Error())
  19. os.Exit(1)
  20. }()
  21. }