Como identificar a causa do erro "Status de saída 1" no exec.Command de Golang
Ao executar o método exec.Command em Golang , receber um erro de "status de saída 1" pode ser frustrantemente vago. A ausência de informações específicas dificulta a depuração eficaz.
Para recuperar informações mais detalhadas, aproveite a propriedade Stderr do objeto Command. Isso é conseguido por:
var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run()
Ao redirecionar erros para o buffer stderr, você pode acessá-los no caso de falha do comando.
if err != nil { fmt.Println(fmt.Sprint(err) ": " stderr.String()) return }
Em alguns casos, a saída é exibida em stdout e stderr. Se o comando retornar um código de erro diferente de zero, como no exemplo abaixo:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\\")
A mensagem de erro será:
exit status 1: find: -exec: no terminating ";" or " "
É importante observar que embora stderr normalmente indique erros, alguns comandos imprimem erros em stdout ou em stderr sem retornar um código de erro. Portanto, pode ser necessário ajustar seu código para acomodar comandos específicos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3