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

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 关注
  • 596 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号