Go:信号操作
作用
- 可以用来阻止Ctrl+c关闭程序
- Web应用可以在收到Ctrl+c阻止新的请求进入,等待所有进入请求处理完成退出程序
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
func main() {
// 监听处理信号
go SignalHandle()
// 防止main执行完毕退出
select {
}
}
func SignalHandle() {
for {
ch := make(chan os.Signal)
signal.Notify(ch, syscall.SIGINT)
sig := <-ch
fmt.Printf("收到信号:%d %s\n", sig, sig.String())
switch sig {
case syscall.SIGINT:
os.Exit(1)
}
}
}