我有两个围棋程序。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)
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
SIGKILL 不能被接收进程捕获 - 内核将强制进程终止。您可以发送 SIGTERM 以在另一端处理和处理它 - 这是停止应用程序的常规方法。
- 1 回答
- 0 关注
- 579 浏览
添加回答
举报
0/150
提交
取消