Я запускаю команду в Go через exec.Command
и сканирую вывод. В некоторых системах вывод является немедленным. Но в некоторых системах вывод выглядит буферизированным. Если объем данных, создаваемых командой, не достаточно велик, я фактически не получаю вывод.
Есть ли способ получить более быстрый вывод, надежно?
package main
import (
"fmt"
"log"
"os/exec"
"time"
)
func main() {
cmd := exec.Command("udevadm", "monitor")
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
err = cmd.Start()
if err != nil {
log.Fatal(err)
}
for {
p := make([]byte, 10)
n, _ := stdout.Read(p)
fmt.Println("@ ", time.Now().Unix(), " ", n)
}
}