Есть процесс, который работает пока не остановят, необходимо считать поток вывода до момента пока в нём что-то есть. Проблема в том что ридер зависает, ожидая следующую строчку, необходимо чтобы он не зависал, а просто переставал читать.
Привёл код, где ридер бесконечно читает из stdout. Много гуглил, но ничего нужного мне не нашёл.
package main
import (
"bufio"
"fmt"
"os/exec"
"time"
)
func main() {
fmt.Println("Started")
child := exec.Command("python", "./test.py")
stdout, err := child.StdoutPipe()
if err != nil {
return
}
time.Sleep(time.Second * 3)
var text string
reader := bufio.NewReader(stdout)
for {
line, _, err := reader.ReadLine()
if err != nil {
break
}
text += string(line)
}
fmt.Println(text)
}
test.py
import time
import sys
while True:
print("hello", file=sys.stdout)
time.sleep(0.1)