Выполнить команду оболочки в Go

Я хочу выполнить команду оболочки в Go и получить результат в виде строки в моей программе. Я видел версию Rosetta Code :

package main
import "fmt"
import "exec"

func main() {
  cmd, err := exec.Run("/bin/ls", []string{"/bin/ls"}, []string{}, "", exec.DevNull, exec.PassThrough, exec.PassThrough)
  if (err != nil) {
    fmt.Println(err)
    return
  }
  cmd.Close()

Но она не фиксирует фактический стандарт или ошибается так, как я могу получить программный доступ - они все еще распечатываются в обычном stdout / stderr. Я видел, что использование Pipe как выход или ошибка может помочь в другом месте, но не было примера того, как это сделать. Есть идеи?

38
задан Chris Bunch 31 May 2011 в 02:18
поделиться