«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему мой Golang `exec.Command` возвращает «Состояние выхода 1»?

Почему мой Golang `exec.Command` возвращает «Состояние выхода 1»?

Опубликовано 17 ноября 2024 г.
Просматривать:280

Why Does My Golang `exec.Command` Return

Как определить причину ошибки «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