Cómo identificar la causa del error "Estado de salida 1" en el comando exec.Command de Golang
Al ejecutar el método exec.Command en Golang , recibir un error de "estado de salida 1" puede resultar frustrantemente vago. La ausencia de información específica dificulta la depuración efectiva.
Para recuperar información más detallada, aproveche la propiedad Stderr del objeto Command. Esto se logra mediante:
var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run()
Al redirigir los errores al búfer stderr, puede acceder a ellos en caso de que falle el comando.
if err != nil { fmt.Println(fmt.Sprint(err) ": " stderr.String()) return }
En algunos casos, la salida se muestra tanto en stdout como en stderr. Si el comando devuelve un código de error distinto de cero, como en el siguiente ejemplo:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\\")
El mensaje de error será:
exit status 1: find: -exec: no terminating ";" or " "
Es importante tener en cuenta que, aunque stderr normalmente indica errores, algunos comandos imprimen errores en stdout o stderr sin devolver un código de error. Por lo tanto, podría ser necesario ajustar su código para acomodar comandos específicos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3