悬赏 3000 能量求一码
dev #编程开发
功能非常简单:用 golang 编写一个程序,在 windows 下(cmd 窗口)中,当程序启动时,监听用户 Ctrl+C 事件,当按下 Ctrl+C (中断)后,等待 10 秒后退出程序,期间不能交还控制权(cmd shell prompt 不出现)
第一个实现并验证有效的人将会得到 3000 能量
恢复会话中...
功能非常简单:用 golang 编写一个程序,在 windows 下(cmd 窗口)中,当程序启动时,监听用户 Ctrl+C 事件,当按下 Ctrl+C (中断)后,等待 10 秒后退出程序,期间不能交还控制权(cmd shell prompt 不出现)
第一个实现并验证有效的人将会得到 3000 能量
myprogram.zip|attachment (645.2 KB)
main.go
package main
import (
"fmt"
"os"
"os/signal"
"time"
)
const shutdownDelay = 10 * time.Second
func main() {
sig := make(chan os.Signal, 1)
signal.Notify(sig, interruptSignals()...)
fmt.Println("监听中...")
// signal.Notify 已接管默认终止行为:收到 Ctrl+C 后进程不会被杀,
// 阻塞在这里直到第一次中断到来
<-sig
fmt.Println("监听到中断,等待 10 秒...")
// 等待期内再按 Ctrl+C / Ctrl+Break 只会进入这个循环被丢弃,
// 进程保持存活,控制权不会提前交还给 cmd
go func() {
for range sig {
}
}()
time.Sleep(shutdownDelay)
fmt.Println("程序退出")
}