package main
import (
"log"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
// 监听退出信号
shutdown := make(chan os.Signal, 1)
signal.Notify(shutdown, syscall.SIGTERM, syscall.SIGINT, syscall.SIGQUIT)
log.Println("程序启动")
_ = <-shutdown
// TODO 清理操作
time.Sleep(time.Second * 2)
log.Println("程序退出")
os.Exit(0)
}
/*
可以在主调函数中再声明个chan,如sigClose,来接收监听到的信号量
*/
func test(args map[string]interface{}){
sigClose := make(chan struct{}, 1)
SignalMonitor(sigClose)
if len(sigClose) > 0 {
cmd.client.XTCloseHandler(args["Handler"].(string))
os.Exit(1)
}
}
/*
监听信号
*/
func SignalMonitor(queue chan struct{}) {
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
go func() {
<-c
queue <- struct{}{}
}()
}