在 Go 中,我想从我的应用程序中执行一个二进制文件,并不断读取命令打印到 stdout 的内容。但是,需要注意的是,二进制文件被编程为无限执行其任务,直到它读取回车键,而我无法访问二进制文件的源代码。如果我直接从终端执行二进制文件,它的行为是正确的。但是,如果我从应用程序内执行二进制文件,它会以某种方式认为它读取了 enter 键,并且几乎立即关闭。下面是一个代码片段,演示了我如何尝试执行二进制文件,将其标准化,然后将其打印到屏幕上:
func main() {
// The binary that I want to execute.
cmd := exec.Command("/usr/lib/demoApp")
// Pipe the command's output.
stdout, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
}
stdoutReader := bufio.NewReader(stdout)
// Start the command.
err = cmd.Start()
if err != nil {
fmt.Println(err)
}
// Read and print the command's output.
buff := make([]byte, 1024)
var n int
for err == nil {
n, err = stdoutReader.Read(buff)
if n > 0 {
fmt.Printf(string(buff[0:n]))
}
}
_ = cmd.Wait()
}
任何想法,如果我试图完成的事情是可能的?
喵喔喔
桃花长相依
相关分类