需要在 Unix 环境下执行才能看到输出
package main
import (
"fmt"
"os"
"os/signal"
)
func main() {
signalChan := make(chan os.Signal, 1)
cleanupDone := make(chan bool)
signal.Notify(signalChan, os.Interrupt)
go func() {
for _ = range signalChan {
fmt.Println("\n收到终端信号,停止服务... \n")
cleanup()
cleanupDone <- true
}
}()
<-cleanupDone
}
func cleanup() {
fmt.Println("清理...\n")
}
执行程序,并 Ctrl+c
看效果
$ go run interrupt.go
^C
收到终端信号,停止服务...
清理...
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于