我需要找到一种从io.ReadCloser对象读取行的方法,或者找到一种在“结束行”符号上拆分字节数组的方法。但是我不知道结束线符号,也找不到它。
我的应用程序执行一个php脚本,需要从该脚本获取实时输出,并在获取它时对其执行“某些操作”。
这是我的一小段代码:
cmd := exec.Command(prog, args)
/* cmd := exec.Command("ls")*/
out, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
}
err = cmd.Start()
if err != nil {
fmt.Println(err)
}
之后,我out在go例程中监视缓冲区。我尝试了2种方法。
1)nr, er := out.Read(buf)其中buf是一个字节数组。这里的问题是我需要为每个新行制动数组
2)我的第二个选择是创建一个新的bufio.reader ,如果我执行像这样的命令,则可以正常运行,但如果我执行则可以正常运行一个PHP脚本,它立即得到文件结尾错误并退出(我猜这是由于PHP的输出延迟)
r := bufio.NewReader(out)
line,_,e := r.ReadLine()
ls
编辑:我的问题是我正在go例程内创建bufio.Reader,而如果我在StdoutPipe()像minikomi建议的那样做后,它可以正常工作
MM们
相关分类