我正在尝试从 Golang 生成一个子进程。目标是逐行读取和处理输入。这是我试图开始工作的内容:
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)
}
在此示例中,打印了“已创建扫描仪”,但之后没有任何反应。
但是,运行此命令确实会导致我期望打印到的内容:
/usr/local/bin/pocketsphinx_continuous -inmic yes 1>out.txt
并修改代码以直接复制到stdout工作以及:
cmd := exec.Command("/usr/local/bin/pocketsphinx_continuous", "-inmic", "yes")
cmd.Stdout = os.Stdout
我错过了什么让我无法阅读输出?
当年话下
慕田峪7331174
相关分类