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{}{}
	}()
}