我想捕捉Ctrl+C(SIGINT
)从控制台发送的信号,并打印出部分运行总数。
这在戈朗有可能吗?
注意:当我第一次发布这个问题时,我对Ctrl+C是什么感到困惑SIGTERM
而不是SIGINT
.
发布于 2018-03-26 11:45:01
这样做是可行的:
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time" // or "runtime"
)
func cleanup() {
fmt.Println("cleanup")
}
func main() {
c := make(chan os.Signal, 2)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
go func() {
<-c
cleanup()
os.Exit(1)
}()
for {
fmt.Println("sleeping...")
time.Sleep(10 * time.Second) // or runtime.Gosched() or similar per @misterbee
}
}
https://stackoverflow.com/questions/-100007779
复制相似问题