如何解决如何在Go中以交互方式执行流程?
我正在OSX上执行命令-在我的情况下为fs_usage
-与通过管道传输到文件时相比,通过终端运行时其输出不同。
例如,同时以sudo
身份运行,以下两个命令将产生不同的输出:
这是我想要的输出:
$ sudo fs_usage -f diskio 0
这会产生不同的输出,我不想要:
$ sudo fs_usage -f diskio 0 > out.txt
然后,我尝试在Go中模拟前者并在程序中处理输出。以下代码未给出预期的结果(它输出非交互式,修改后的输出):
cmd := exec.Command("fs_usage","-f","diskio","0")
stdout,err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
err = cmd.Start()
if err != nil {
log.Fatal(err)
}
scanner := bufio.NewScanner(stdout)
scanner.Split(bufio.ScanLines)
for scanner.Scan() {
line := scanner.Text()
fmt.Println(line)
}
但是,此代码确实打印了预期的结果:
cmd := exec.Command("fs_usage","0")
cmd.Stdout = os.Stdout
cmd.Start()
cmd.Wait()
那么,我想要的是第二个示例的行为,但是能够逐行读取该输入或遍历字节片。我该怎么做?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。