gpt4 book ai didi

Golang : Kill an os. 进程与 exec.ExitError

转载 作者:数据小太阳 更新时间:2023-10-29 03:42:22 31 4
gpt4 key购买 nike

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

我目前拥有的:

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 代替)。不幸的是,它看起来不像 os.ExitError 类型允许您检索退出代码本身作为退出状态字符串以外的任何内容。但是,您仍然可以使用该错误类型的存在与否作为非零或零退出状态的指示。

关于Golang : Kill an os. 进程与 exec.ExitError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44597543/

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