恢复会话中...

悬赏 3000 能量求助,关于 golang 在 windows 下的中断信号处理问题

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

入口文件:https://github.com/runoneall/tinyagent/blob/main/main.go

我在 main.go 中用自封装的一个 threadmgr 来启动 mainAgent,随后通过 Wait 方法等待所有 thread 退出

Wait 实现如下所示

package threadmgr

import (
	"os"
	"os/signal"
)

func Wait() {
	sigInterrupt := make(chan os.Signal, 1)
	signal.Notify(sigInterrupt, os.Interrupt)
	<-sigInterrupt

	go func() {
		for range sigInterrupt {
		}
	}()

	cancel()
	wg.Wait()
}

目前有一个问题,当我在 Agent 执行中按下 Ctrl+C,context 确实被取消了,wg.Wait() 也确实执行了,但我按下 Ctrl+C 的那一瞬间,shell 控制权就被交还了(shell prompt 出现),导致 wg.Wait() 是在后台等待的,我想让其在前台等待,也就是 threadmgr.Wait() 执行完成后,才交还控制权

求助各位大佬,求解答

0 条评论

还没有评论

还没有评论,来抢沙发吧~