Как определить причину ошибки «Exit Status 1» в exec.Command Golang
При выполнении метода exec.Command в Golang , получение ошибки «статус выхода 1» может быть удручающе расплывчатым. Отсутствие конкретной информации препятствует эффективной отладке.
Чтобы получить более подробную информацию, используйте свойство Stderr объекта Command. Это достигается с помощью:
var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run()
Перенаправляя ошибки в буфер stderr, вы можете получить к ним доступ в случае сбоя команды.
if err != nil { fmt.Println(fmt.Sprint(err) ": " stderr.String()) return }
В некоторых случаях выходные данные отображаются как в стандартном выводе, так и в стандартном потоке stderr. Если команда возвращает ненулевой код ошибки, как в примере ниже:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\\")
Сообщение об ошибке будет следующим:
exit status 1: find: -exec: no terminating ";" or " "
Важно отметить, что хотя stderr обычно указывает на ошибки, некоторые команды выводят ошибки в stdout или stderr, не возвращая код ошибки. Следовательно, может потребоваться корректировка вашего кода для поддержки определенных команд.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3