import "os/exec"
package exec運行外部命令。它包裝os.startprocess,以便從新映射stdin和stdout、將I/O與管道鏈接以及進行其餘調整。code
3. 實時輸出命令cmd
4. 阻塞輸出命令string
func CmdSyncExec(name string, arg ...string) error { cmd := exec.Command(name, arg...) if err := cmd.Start(); err != nil { return err } //wait for command to finishing ... if err := cmd.Wait(); err != nil { return err } return nil }
func CmdBlockExec(name string, arg ...string) error { cmd := exec.Command(name, arg...) if err := cmd.Run(); err != nil { return err } return nil }
func CmdSyncOutput(name string, arg ...string) error { cmd := exec.Command(name, arg...) stdout, err := cmd.StdoutPipe() if err != nil { return err } go func() { for { buf := make([]byte, 1024) if length, err := stdout.Read(buf); err != nil { break } else if err == nil && length > 0 { buf[length-1] = 0 fmt.Printf("%s", buf) } } }() if err := cmd.Run(); err != nil { return err } return nil }
func CmdBlockOutput(name string, arg ...string) error { out, err := exec.Command(name, arg...).out if err != nil { return err } fmt.Printf("%s", out) return nil }