我有两个围棋程序。ProgA 使用 cmd.Start() 启动 ProgB。从 ProgA 我尝试杀死 ProgB,但 ProgB 应该立即被杀死,它必须在死亡之前进行一些清理。所以我在 ProgB 中使用 signal.Notify 来处理 sigcall.SIGKILL 但每当 ProgA 调用 progb.Process.Kill() 它似乎没有通知 ProgB(将内容写入 sigc 通道)
在 ProgB 我有这样的通知:
signal.Notify(sigc, syscall.SIGKILL)
go func() {
fmt.Println("started listening")
<-sigc
fmt.Println("sig term")
cleanUp()
os.Exit(1)
}()
someLongRunningCode()
有什么我错过了吗?我确定 ProgA 会发送 SIGKILL,因为 cmd.Process.Kill() 在内部执行 process.Signal(SIGKILL)
慕姐4208626
相关分类