Как Вы получаете вывод системной команды в Движении?

Повреждение в 80 символах - что-то, что Вы делаете в то время как кодирование, не впоследствии. То же с комментариями, конечно. Большинство редакторов может помочь Вам в наблюдении, где предел с 80 символами.

(Это может быть небольшим OT, но в Eclipse, существует опция, которая форматирует код, когда Вы сохраняете его (согласно любым правилам, Вы хотите). Это немного причудливо сначала, но через некоторое время Вы начинаете признавать, что форматирование больше не находится в Ваших руках, чем сгенерированный код.)

46
задан hannson 19 March 2010 в 06:14
поделиться

3 ответа

Изменить: Этот ответ устарел. См. ответ Фатиха Арслана ниже.


Используйте exec.Run , указав Pipe в качестве stdout (и stderr, если хотите). Он вернет cmd, который содержит os.File в полях Stdout (и Stderr). Затем вы можете прочитать его, используя, например, ioutil.ReadAll .

Пример:

package main

import (
    "exec";
    "io/ioutil";
)

func main() {
    if cmd, e := exec.Run("/bin/ls", nil, nil, exec.DevNull, exec.Pipe, exec.MergeWithStdout); e == nil {
        b, _ := ioutil.ReadAll(cmd.Stdout)
        println("output: " + string(b))
    }
}
0
ответ дан 7 November 2019 в 13:38
поделиться

Два варианта, в зависимости от предпочитаемой вами парадигмы:

  1. os.ForkExec ()
  2. exec.Run ()
3
ответ дан 7 November 2019 в 13:38
поделиться

Используйте exec.Run , передав Pipe для стандартного вывода. Прочтите из канала, который он возвращает.

2
ответ дан 7 November 2019 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: