signal.go 398 B

123456789101112131415161718192021222324252627
  1. package signalchan
  2. import (
  3. "fmt"
  4. "os"
  5. "os/signal"
  6. "syscall"
  7. )
  8. var SignalChan = make(chan os.Signal)
  9. func InitSignal() (err error) {
  10. defer func() {
  11. if r := recover(); r != nil {
  12. err = fmt.Errorf("init signal error: %v", r)
  13. return
  14. }
  15. }()
  16. signal.Notify(SignalChan, syscall.SIGINT, syscall.SIGTERM)
  17. return nil
  18. }
  19. func CloseSignal() {
  20. signal.Stop(SignalChan)
  21. close(SignalChan)
  22. }