cmd := exec.Command("cmd", "/C", "C:/gopath/src/script/for.exe")
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
var out bytes.Buffer
cmd.Stdout = &out
fmt.Printf("Вывод in caps: %q\n", out.String())
fmt.Printf("Вывод: %v\n", out.String())
cmd.Stdin = strings.NewReader("param1")
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
cmd := exec.Command("cmd", "/C", "C:/gopath/src/script/for.exe")
// Чтобы вводить что-то в стандартный поток ввода другой программы, нужно получить ее pipe.
pipe, err := cmd.StdinPipe()
if err != nil {
log.Fatal(err)
}
// Куда впоследствии можно что-то писать.
pipe.Write([]byte("piggybank"))
// После ввода всех данных нужно обязательно его закрыть.
pipe.Close()
// Самый простой способ получить вывод другой программы, использовать:
output, err := cmd.Output()
if err != nil {
log.Fatal(err)
}
fmt.Print(string(output))
}
package main
import (
"bufio"
"fmt"
"log"
"os/exec"
)
func main() {
cmd := exec.Command("cmd", "/C", "C:/gopath/src/script/for.exe")
// Получаем reader для STDOUT запущенной программы
// Это нужно делать до её запуска
stdoutPipe, err := cmd.StdoutPipe()
if err != nil {
log.Fatal("Cannot get stdout pipe: ", err)
}
// Запускаем команду
err = cmd.Start()
if err != nil {
log.Fatal("Cannot start the command: ", err)
}
// Создаём более удобный интерфейс чтения
r := bufio.NewReader(stdoutPipe)
// Читаем из stdout одну строку (пока не встретим перевод строки \n)
str, err := r.ReadString('\n')
if err != nil {
log.Fatal("Cannot read from STDOUT: ", err)
}
fmt.Println(str)
}