Golang:使用exec.exit杀死操作系统进程

Golang:使用exec.exit杀死操作系统进程,go,error-handling,operating-system,Go,Error Handling,Operating System,如果我有一个名为“myCmd”的os.Exec对象,并调用myCmd.Process.Kill(),那么进程的返回代码行为是什么?它会返回exec.exit吗?我想强制杀掉os.Exec进程(I.eo kill-9),让它返回Exec.ExitError或我的goroutine可以区分的东西,用于返回代码为0的正常cmd退出 到目前为止,我所拥有的: myCmd.Start() var cmdWatcher = func(childCmd os.Cmd) { err := child

如果我有一个名为“myCmd”的os.Exec对象,并调用myCmd.Process.Kill(),那么进程的返回代码行为是什么?它会返回exec.exit吗?我想强制杀掉os.Exec进程(I.eo kill-9),让它返回Exec.ExitError或我的goroutine可以区分的东西,用于返回代码为0的正常cmd退出

到目前为止,我所拥有的:

myCmd.Start()

var cmdWatcher = func(childCmd os.Cmd) {

    err := childCmd.Wait()
    if exitErr, k := err.(*exec.ExitError); k {
        fmt.Print("ExitError detected")
    }
    return 
}

go cmdWatcher(myCmd)

myCmd.Process.Kill()
Kill()
与在进程上调用
Kill-9
相同,它发送一个无法捕获的
SIGKILL
。与所有非零退出代码一样,
Wait()
随后将返回一个
exitror


您还可以选择使用
Process.Signal()
,这允许您指定所需的任何信号(例如,
SIGINT
SIGTERM
)。不幸的是,它看起来不像os.ExitError类型允许您将退出代码本身作为除退出状态字符串之外的任何内容检索。但是,您仍然可以使用该错误类型的存在或不存在作为非零或零退出状态的指示。

正如文档所说,非零退出返回一个
*exec.ExitError
。你试过这个吗?你有什么问题?