异常都是靠recover捕捉来恢复的
正常退出的监听, os/signal, 请。
以下只是对于 ctrl + c 的信号捕捉示例
package main
import (
"fmt"
"os"
"os/signal"
)
func main() {
c := make(chan os.Signal)
signal.Notify(c)
//signal.Notify(c, syscall.SIGHUP, syscall.SIGUSR2) //监听指定信号
s := <-c //阻塞直至有信号传入
fmt.Println("get signal:", s)
}