Go 接受 os.Interrupt

15 min read

在 Go 中,可以使用 os/signal 包来捕获 os.Interrupt 信号。以下是一个示例程序:

package main

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

func main() {
    // 创建一个信号通道
    sigCh := make(chan os.Signal, 1)

    // 捕获 os.Interrupt 和 syscall.SIGTERM 信号
    signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)

    // 阻塞,等待信号
    sig := <-sigCh
    fmt.Printf("接收到信号 %v,程序退出。\n", sig)
}

在这个程序中,我们首先创建了一个信号通道 sigCh。然后,使用 signal.Notify 函数来让这个通道接收 os.Interruptsyscall.SIGTERM 信号。最后,通过阻塞等待信号,当有信号到来时,程序会打印出信号的类型,并退出。