恢复会话中...

悬赏 3000 能量求一码

R
runoneall
runoneall整鸡
发布于 last week· 最后编辑于 last week
1 0 2

功能非常简单:用 golang 编写一个程序,在 windows 下(cmd 窗口)中,当程序启动时,监听用户 Ctrl+C 事件,当按下 Ctrl+C (中断)后,等待 10 秒后退出程序,期间不能交还控制权(cmd shell prompt 不出现)

第一个实现并验证有效的人将会得到 3000 能量

2 条评论

C
cs9u
cs9u走地鸡#1Flast week

确实简单

V
vhxubo
vhxubo鸡腿#2Flast week

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("程序退出")
}
V
vhxubo
vhxubo鸡腿last week

1790128527735

R
runoneall
runoneall整鸡last week

佬是强的