РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1443 of 1593 menu

Метод exec.Cmd.CombinedOutput

Метод exec.Cmd.CombinedOutput выполняет команду, которую вы настроили через структуру exec.Cmd, и возвращает результат выполнения в виде среза байтов, содержащего как стандартный вывод, так и вывод ошибок. Этот метод полезен, когда вам нужно получить весь вывод команды без разделения на stdout и stderr. Метод запускает команду, ожидает ее завершения и возвращает объединенный вывод. В случае ошибки выполнения команды возвращается ошибка типа *exec.ExitError.

Синтаксис

func (c *Cmd) CombinedOutput() ([]byte, error)

Пример простой команды

Давайте выполним простую команду echo и получим объединенный вывод:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("echo", "Hello, World!") res, err := cmd.CombinedOutput() if err != nil { fmt.Printf("Error: %v\n", err) return } fmt.Printf("%q", string(res)) }

Результат выполнения кода:

"Hello, World!\n"

Пример с выводом ошибок

Давайте выполним команду, которая вызывает ошибку, и посмотрим на объединенный вывод, содержащий сообщение об ошибке:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("ls", "/nonexistent") res, err := cmd.CombinedOutput() if err != nil { fmt.Printf("Command failed: %v\n", err) } fmt.Printf("%q", string(res)) }

Результат выполнения кода:

"ls: cannot access '/nonexistent': No such file or directory\n"

Пример с обработкой ошибки

Давайте обработаем ошибку выполнения команды и проверим код завершения:

package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("false") res, err := cmd.CombinedOutput() if err != nil { if exitErr, ok := err.(*exec.ExitError); ok { fmt.Printf("Exit code: %d\n", exitErr.ExitCode()) } fmt.Printf("Error: %v\n", err) } fmt.Printf("Output: %q", string(res)) }

Результат выполнения кода:

"Exit code: 1\nError: exit status 1\nOutput: \"\""

Смотрите также

  • метод exec.Cmd.Run,
    который выполняет команду без получения вывода
  • метод exec.Cmd.Output,
    который возвращает только стандартный вывод команды
  • метод exec.Cmd.Start,
    который запускает команду асинхронно
  • метод exec.Cmd.Wait,
    который ожидает завершения команды
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить