为了账号安全,请及时绑定邮箱和手机立即绑定

golang处理由cmd.Start启动的进程中的kill

golang处理由cmd.Start启动的进程中的kill

Go
30秒到达战场 2021-08-10 16:01:54
我有两个围棋程序。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 以在另一端处理和处理它 - 这是停止应用程序的常规方法。


查看完整回答
反对 回复 2021-08-10
  • 1 回答
  • 0 关注
  • 579 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信