登录
首页 >  Golang >  Go问答

等待 exec.Cmd 结束或从通道 go 接收消息

来源:stackoverflow

时间:2024-02-26 16:03:14 324浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《等待 exec.Cmd 结束或从通道 go 接收消息》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我想优雅地关闭运行 os/exec cmd 的 goroutine。我将如何等待 cmd.wait() 或来自通道的消息。 像这样的事情:

for {
        select {
        case <-channel:
            fmt.Println("Exit Signal")
            cmd.Process.Kill()
            break
        case <- cmd.Wait():
            break
        }
    }

正确答案


启动一个 goroutine 来等待进程。使用 select 等待该 goroutine 完成或来自通道的消息:

done := make(chan struct{})
go func() {
    cmd.Wait()
    close(done)
}()

select {
case <-done:
    // cmd.Wait() completed.
case <-channel:
    fmt.Println("Exit Signal")
    cmd.Process.Kill()
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《等待 exec.Cmd 结束或从通道 go 接收消息》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>