golang 处理系统 Signal 实现程序优雅退出

2017-12-12  本文已影响364人  WangZZ

go 通过处理系统的 Signal 可以实现程序的优雅退出,go signal 包中的 Notify 函数定义如下:
func Notify(c chan<- os.Signal, sig …os.Signal)
该函数会将进程收到的系统 Signal 转发给 channel c,转发哪些信号由该函数的可变参数决定。

因此你可以在 Notify 函数中传入你要关注和处理的 Signal 类型,通过自定义函数来改变信号对应的行为。

简单示例代码如下:

package main

import (
    "fmt"
    "os"
    "os/signal"
    "syscall"
)

func main() {
    signalChan := make(chan os.Signal, 1)
    signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
    <-signalChan 
    /* 可以在下面定义一些资源回收,代码清理工作 */
    fmt.Println("exit...") 
}

上述代码监听了如下信号:

上一篇 下一篇

猜你喜欢

热点阅读