在 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.Interrupt
和 syscall.SIGTERM
信号。最后,通过阻塞等待信号,当有信号到来时,程序会打印出信号的类型,并退出。