go执行linux命令
精选
原创
©著作权归作者所有:来自51CTO博客作者zzxiaoma的原创作品,请联系作者获取转载授权,否则将追究法律责任
首先建立一个exec.Cmd类型的值,然后执行这个类型的Start方法就可以启动命令了,获取此命令的输出管道,这个管道类型是io.ReadCloser,通过管道获取输出内容。
package main
import (
"bytes"
"fmt"
"io"
"os/exec"
)
func main() {
cmd0 := exec.Command("echo", "-n", "my first command")
//启动命令
if err := cmd0.Start(); err != nil {
fmt.Printf("command can not start %s \n", err)
return
}
//获取输出管道
stdout0, err := cmd0.StdoutPipe()
if err != nil {
fmt.Printf("couldn't stdout pipe for command %s \n", err)
return
}
var outputBuf0 bytes.Buffer
for {
tempOutput := make([]byte, 2048)
n, err := stdout0.Read(tempOutput)
if err != nil {
if err == io.EOF {
break
} else {
fmt.Printf("couldn't read data from pip %s \n", err)
return
}
}
if n > 0 {
outputBuf0.Write(tempOutput[:n])
}
}
fmt.Printf("%s\n", outputBuf0.String())
}