在使用golang开发中,调用外部可执行程序通过exec包是我们常用的方式。如何控制超时请见如下样例:
var (
Timeout = 3 * time.Second
)
func Command(name string, arg ...string) ([]byte, error) {
ctxt, cancel := context.WithTimeout(context.Background(), Timeout)
defer cancel()
cmd := exec.CommandContext(ctxt, name, arg...)
var buf bytes.Buffer
cmd.Stdout = &buf
cmd.Stderr = &buf
if err := cmd.Start(); err != nil {
return buf.Bytes(), err
}
if err := cmd.Wait(); err != nil {
return buf.Bytes(), err
}
return buf.Bytes(), nil
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101662.html原文链接:https://javaforall.cn