go exec使用
GO语言"os/exec"包中"Cmd.StdinPipe"类型的用法及代码示例。
用法:
func(c *Cmd) StdinPipe()(io.WriteCloser, error)
StdinPipe 返回一个管道,该管道将在命令启动时连接到命令的标准输入。 Wait 看到命令退出后,管道将自动关闭。调用者只需调用 Close 即可强制管道更快关闭。例如,如果正在运行的命令在标准输入关闭之前不会退出,则调用者必须关闭管道。
例子:
package main
import (
"fmt"
"io"
"log"
"os/exec"
)
func main() {
cmd := exec.Command("gdisk")
stdin, err := cmd.StdinPipe()
if err != nil {
log.Fatal(err)
}
go func() {
defer stdin.Close()
io.WriteString(stdin, "q \n")
}()
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", out)
}
package main import ( "fmt" "io" "log" "os/exec" ) func main() { cmd := exec.Command("cat") stdin, err := cmd.StdinPipe() if err != nil { log.Fatal(err) } go func() { defer stdin.Close() io.WriteString(stdin, "values written to stdin are passed to cmd's standard input") }() out, err := cmd.CombinedOutput() if err != nil { log.Fatal(err) } fmt.Printf("%s\n", out) }
cmd:=exec.Command("diskpart")
var b bytes.Buffer
cmd.Stdout=&b
cmd.Stderr=&b
cmd.Start()
cmd.Process.Pid
cmd.Wait()
sgdisk sfdisk gdisk
cmd:=exec.Command("guestfish","-a","/dev/sdb")

参考:
https://vimsky.com/examples/usage/golang_os_exec_Cmd_StdinPipe.html
