You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 lines
297 B

  1. package common
  2. import (
  3. "fmt"
  4. "os"
  5. "os/signal"
  6. )
  7. func TrapSignal(cb func()) {
  8. c := make(chan os.Signal, 1)
  9. signal.Notify(c, os.Interrupt)
  10. go func() {
  11. for sig := range c {
  12. fmt.Printf("captured %v, exiting...\n", sig)
  13. if cb != nil {
  14. cb()
  15. }
  16. os.Exit(1)
  17. }
  18. }()
  19. select {}
  20. }