下面是一个示例代码,演示了如何捕获 exec.Command
的缓冲 stdout 输出:
package main
import (
"bytes"
"fmt"
"log"
"os/exec"
)
func main() {
// 创建一个命令
cmd := exec.Command("ls", "-l")
// 创建一个字节缓冲区,用于存储 stdout 输出
var stdout bytes.Buffer
// 设置命令的 stdout 输出为缓冲区
cmd.Stdout = &stdout
// 执行命令
err := cmd.Run()
if err != nil {
log.Fatalf("cmd.Run() failed with %s\n", err)
}
// 输出缓冲区的内容
fmt.Printf("stdout:\n%s\n", stdout.String())
}
在上面的示例中,我们使用 exec.Command
创建了一个命令,并使用 -l
参数执行了 ls
命令。然后,我们创建了一个 bytes.Buffer
类型的变量 stdout
,并将命令的 stdout 输出设置为该缓冲区。接下来,我们调用 cmd.Run()
执行命令,并将 stdout 输出保存在缓冲区中。最后,我们使用 stdout.String()
方法将缓冲区的内容输出到控制台。
请注意,这只是一个简单的示例,实际情况可能更复杂。在实际的应用中,您可能需要处理命令的 stderr 输出、命令的退出状态等。