问题描述:在用代码执行adb命令时,由于adb命令长时间没有响应,导致程序一直没法执行完毕
解决办法:给出超时检测,若程序超时,则重新执行一次
//设置超时时间
var Timeout = 30 * time.Second
//超时检测
func Command(name string, arg ...string) (string, error) {
ctxt, cancel := context.WithTimeout(context.Background(), Timeout)
defer cancel()
cmd := exec.CommandContext(ctxt, name, arg...)
//当经过Timeout时间后,程序依然没有运行完,则会杀掉进程,ctxt也会有err信息
if out, err := cmd.Output(); err != nil {
//检测报错是否是因为超时引起的
if ctxt.Err() != nil && ctxt.Err() == context.DeadlineExceeded {
return "Timeout", nil
}
log.Println("cmd.Output() is fail !------>", err.Error())
return string(out), err
} else {
return string(out), nil
}
}