golang 接收signal

code:

package main

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

func main(){
    
    
        log.SetFlags(log.Lshortfile | log.LstdFlags)
        log.SetPrefix("[signal] ")
        log.Println("start...")

        sigs := make(chan os.Signal, 1)
        done := make(chan bool, 1)

        signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)

        go func() {
    
    
                sig := <-sigs
                log.Println(sig)
                done <- true
        }()

        log.Println("wait signal")

        <-done
        log.Println("exit...")
        return
}

result:

[root@jn signal]# go run sig.go
[signal] 2021/09/23 16:52:06 sig.go:13: start...
[signal] 2021/09/23 16:52:06 sig.go:27: wait signal
^C[signal] 2021/09/23 16:52:08 sig.go:23: interrupt
[signal] 2021/09/23 16:52:08 sig.go:30: exit...
[root@jn signal]# 

猜你喜欢

转载自blog.csdn.net/weixin_44328568/article/details/120438511