diff --git a/cmd/soar/soar.go b/cmd/soar/soar.go index f09796234f1d5fba6b26dc85e6739d535fc2be7e..7ba0bbd4ab866288fd65bc71d0c412210f903803 100644 --- a/cmd/soar/soar.go +++ b/cmd/soar/soar.go @@ -92,7 +92,7 @@ func main() { } //当程序卡死的时候,或者由于某些原因程序没有退出,可以通过捕获信号量的形式让程序优雅退出并且清理测试环境 - go common.SignalNotify(func() { + common.HandleSignal(func() { if common.Config.DropTestTemporary { vEnv.CleanUp() } diff --git a/common/signal.go b/common/signal.go index f71d93bbf6f24eb7b1592b55d74246a027ee67ec..4329c9677b150a497f3f6cac569be23fae266e2e 100644 --- a/common/signal.go +++ b/common/signal.go @@ -20,10 +20,11 @@ import ( "os" "os/signal" "syscall" + "time" ) //当程序卡死的时候,或者由于某些原因程序没有退出,可以通过捕获信号量的形式让程序优雅退出并且清理测试环境 -func SignalNotify(f func()) { +func HandleSignal(f func()) { sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGHUP, @@ -37,6 +38,8 @@ func SignalNotify(f func()) { case n := <-sc: Log.Info("receive signal %v, closing", n) f() + time.Sleep(250 * time.Millisecond) + os.Exit(0) } }() }