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

posted @ 2022-04-22 16:03  redrobot  阅读(316)  评论(0编辑  收藏  举报