我有两个去节目.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)