Задача такая:
Через exec.Command запускаю, например, script.py
script.py
import time
while True:
time.sleep(3)
print("...")
Далее надо считывать вывод программы и сохранять его в какой-нибудь буфер, чтоб потом с помощью отдельной функции его считывать по запросу
Проблема в том, что никак не могу разобраться с os.Pipe() и Reader/Writer
Сейчас у меня примерно такой код:
spoiler
cmd := exec.Command("python", "script.py")
pr, pw := io.Pipe()
cmd.Stdout = pw
bufReader = bufio.NewReader(pr)
outputBuffer = bytes.NewBuffer([]byte{})
go func() {
for {
b, err := bufReader.ReadByte()
outputBuffer.WriteByte(b)
if err != nil {
if err == io.EOF {
break
} else {
fmt.Println(err)
os.Exit(1)
}
}
pr.Close()
}
}()
if err := cmd.Run(); err != nil {
log.Println(err.Error())
}
И отдельно просто беру outputBuffer.Bytes() по запросу