信号监听
小于 1 分钟
使用OS包监听系统信号
package main
import (
"context"
"log"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
ch := make(chan os.Signal, 1)
signal.Notify(ch, os.Interrupt, syscall.SIGTERM)
go func() {
<-ch
log.Println("Received termination, signaling shutdown")
cancel()
}()
go func(ctx context.Context) {
<-ctx.Done()
log.Println("context done")
os.Exit(0)
}(ctx)
time.Sleep(time.Minute)
}