# goLang实现程序的优雅退出 ``` package main import ( "fmt" "github.com/sirupsen/logrus" "os" "os/signal" "syscall" "time" ) func main(){ stop := make(chan os.Signal,1) signal.Notify(stop,syscall.SIGKILL,syscall.SIGINT) //监听ctrl+c 以及 kill 信号,如果有就写入stop管道中 hup := make(chan os.Signal,1) signal.Notify(hup,syscall.SIGHUP) //监听kill -HUP 信号,如果有就放入hup管道中,让程序重新加载配置 //主逻辑协程 go func(){ for { logrus.Info("test") time.Sleep(time.Second) } }() //重载配置文件协程 go func() { for { <- hup fmt.Println("重载配置操作") } }() <- stop fmt.Println("退出前操作") } ```