Golang'dan bir alt işlem oluşturmaya çalışıyorum. Amaç, giriş satırını okumak ve işlemektir. Bu örnekteBir alt işlemden okuma Metni
func readStuff(scanner *bufio.Scanner) {
for scanner.Scan() {
fmt.Println("Performed Scan")
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading standard input:", err)
}
}
func main() {
cmd := exec.Command("/usr/local/bin/pocketsphinx_continuous", "-inmic", "yes")
out, err := cmd.StdoutPipe()
err = cmd.Start()
checkError(err)
scanner := bufio.NewScanner(out)
fmt.Println("Scanner created")
defer cmd.Wait()
go readStuff(scanner)
}
, "Tarayıcı oluşturulan" yazdırılır, ama hiçbir şey bundan sonra olur: İşte çalışma almak çalışıyorum budur. Bu komut ancak bekliyorum neyi neden yok Running
için basılacak:
/usr/local/bin/pocketsphinx_continuous -inmic yes 1>out.txt
Ve doğrudan stdout
kopyalamak için kod değiştirerek de çalışır:
cmd := exec.Command("/usr/local/bin/pocketsphinx_continuous", "-inmic", "yes")
cmd.Stdout = os.Stdout
I neyim eksik olan bu çıktıyı okumamı engelliyor mu?
Teşekkür (bunun için gorouting yumurtlama değil). Bu hatayı kontrol etmek için kodumu güncelledim ve tüm satırları okumadan önce beklemeyin. Hala sadece StdErr'den çizgiler görüyorum. (PocketSphinx hala bu argümanlar olmadan çalışacak, sadece zayıf bir tanıma sahip olacak) http://hastebin.com/ojetacoraw.go – tgrosinger