gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:51:30 29 4
gpt4 key购买 nike

我有两个围棋程序。 ProgA 使用 cmd.Start() 启动 ProgB。从 ProgA 我尝试杀死 ProgB,但 ProgB 不应该立即被杀死,它必须在死前做一些清理。所以我在 ProgB 中使用 signal.Notify 来处理 sigcall.SIGKILL 但每当 ProgA 调用 progb.Process.Kill() 它似乎没有通知 ProgB(将内容写入 sigc channel )

在 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)

最佳答案

SIGKILL 不能被接收进程捕获 - 内核将强制进程终止。您可以发送 SIGTERM 到另一端处理和处理它 - 这是停止应用程序的常规方法。

关于golang 在 cmd.Start 启动的进程中处理 kill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25358162/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com