戈朗: 杀死一个操作系统.与执行程序一起处理.退出错误



如果我有一个操作系统。Exec对象称为"myCmd",我调用myCmd.Process.Kill((,进程的返回代码行为是什么?它会返回一个执行器吗?退出错误?我想强行杀死操作系统。执行进程(即 kill -9(,让它返回一个可执行文件。退出错误或我的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() 将返回一个ExitError

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

最新更新