您的位置 首页 golang

golang执行外部命令超时处理

golang执行外部命令超时处理

不至于当前程序挂起,超时杀死超时进程。

doneChan := make(chan bool, 1)
errorChan := make(chan error, 1)
var cmd *exec.Cmd = exec.Command(name, newArg...)
go func () {
   output, err := cmd.CombinedOutput()
   if err != nil {
      log.Printf("execute command failed, output: %s, error: %v\n", string(output), err)
      errorChan <- err
      return
   }
   doneChan <- true
}()
select {
case <-time.After(30 * time.Second):
log.Printf("execute command timeout\n")
cmd.Process.Kill()
case <-doneChan:
// command success
case err := <-errorChan:
log.Printf("execute command failure, error: %v\n", err)
return err
}

文章来源:智云一二三科技

文章标题:golang执行外部命令超时处理

文章地址:https://www.zhihuclub.com/174.shtml

关于作者: 智云科技

热门文章

网站地图