Cmd 结构体
命令的操做经过 Cmd结构体实现svg
type Cmd struct { // 命令 Path string // 命令参数 Args []string // 进程执行环境 Env []string // 命令执行目录, 默认当前目录 Dir string // 命令输入 Stdin io.Reader // 命令输出 Stdout io.Writer // 命令报错 Stderr io.Writer ExtraFiles []*os.File SysProcAttr *syscall.SysProcAttr Process *os.Process ProcessState *os.ProcessState }
建立命令对象
- Command
func Command(name string, arg ...string) *Cmd
cmd, err := exec.Command("echo", "show me") if err != nil{ fmt.Printf("err: %v", err) return }
执行命令
- Run 阻塞进程,直到命令执行结束
- Start 非阻塞执行
- Wait 阻塞进程,等待命令执行结束, 与 Star 配合使用
接收命令输出
var outInfo bytes.Buffer cmd := exec.Command("echo", "show me") // 设置接收 cmd.Stdout = &outInfo // 执行 cmd.Run() fmt.Println(out.String())
设置命令输入
var outInfo bytes.Buffer cmd := exec.Command("tr", "a-z", "A-Z") cmd.Stdin = strings.NewReader("select * from user") cmd.Stdout = &outInfo cmd.Run() fmt.Println(out.String())
本文同步分享在 博客“直立猿”(JianShu)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。ui