首页 > 系统服务 > 详细

GO执行shell命令

时间:2019-12-10 21:13:06      阅读:300      评论:0      收藏:0      [点我收藏+]

Golang执行shell命令主要依靠exec模块

代码为核心逻辑,并非全部

运行命令

cmd1 = exec.Command("ls")
if err = cmd1.Run(); err != nil {
    log.Fatal(err)
}

运行命令并获取返回值

cmd2 = exec.Command("bash", "-c", "echo hello")
if output, err = cmd2.CombinedOutput(); err != nil {
    log.Fatal(err)
}
fmt.Println(string(output))

运行命令并强制结束

// 使用waitgroup实现并发同步
var wg sync.WaitGroup
// 使用上下文实现强制结束
ctx, cancelFunc = context.WithCancel(context.TODO())
wg.Add(1)
go func() {
    var (
        output []byte
        err    error
    )
    // 将context传入cmd实现channel的监听和任务强杀
    cmd3 = exec.CommandContext(ctx, "bash", "-c", "sleep 2; echo hello")
    if output, err = cmd3.CombinedOutput(); err != nil {
        // 2019/12/10 19:23:25 signal: killed
        log.Println(err)
    }
    // output为空
    fmt.Println(string(output))
    wg.Done()
}()
time.Sleep(1 * time.Second)
// 强制结束命令
cancelFunc()
wg.Wait()

GO执行shell命令

原文:https://www.cnblogs.com/Peter2014/p/12018661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!