cancel.go 603 B

12345678910111213141516171819202122232425262728293031
  1. //go:build linux || darwin
  2. // +build linux darwin
  3. package migrate
  4. import (
  5. "os"
  6. "os/signal"
  7. "syscall"
  8. "github.com/zeromicro/go-zero/core/syncx"
  9. "github.com/zeromicro/go-zero/tools/goctl/util/console"
  10. )
  11. func cancelOnSignals() {
  12. doneChan := syncx.NewDoneChan()
  13. defer doneChan.Close()
  14. go func(dc *syncx.DoneChan) {
  15. c := make(chan os.Signal)
  16. signal.Notify(c, syscall.SIGTERM, syscall.SIGKILL, syscall.SIGINT, syscall.SIGTSTP, syscall.SIGQUIT)
  17. select {
  18. case <-c:
  19. console.Error(`
  20. migrate failed, reason: "User Canceled"`)
  21. os.Exit(0)
  22. case <-dc.Done():
  23. return
  24. }
  25. }(doneChan)
  26. }