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

Vis*_*hnu 1 interrupt go

我有两个去节目.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() 
Run Code Online (Sandbox Code Playgroud)

有什么我错过了吗?我确信ProgA发送了一个SIGKILL,因为cmd.Process.Kill()在内部执行了一个进程.Signal(SIGKILL)

mec*_*ind 6

SIGKILL不能被接收过程困住 - 内核将强制进程终止.您可以发送SIGTERM来处理并在另一侧处理它 - 这是一种停止应用程序的传统方法.