909 B
909 B
Golang 执行外部程序
需要使用 os/exec 包。
示例如下:
func MakeCmd(name string, arg ...string) *exec.Cmd {
cmd := exec.Command(name, arg...)
cmd.Env = append(cmd.Env, os.Getenv("USER"))
cmd.Env = append(cmd.Env, os.Getenv("HOME"))
cmd.Env = append(cmd.Env, os.Getenv("SHELL"))
cmd.Env = append(cmd.Env, os.Getenv("LOGNAME"))
cmd.Env = append(cmd.Env, os.Getenv("PATH"))
return cmd
}
func main() {
cmd := MakeCmd("ls", "-l", "/")
output, _ := cmd.Output()
fmt.Println(string(output))
}
exec.Cmd 有 Start、Wait、Run、Output 等方法,其中
- Start:非阻塞执行;
- Wait:阻塞进程,等待命令执行结束, 经常与 Star 配合使用;
- Run:阻塞进程,直到命令执行结束,相当于 Start+Wait 的组合;
- Output:阻塞进程,直到命令执行结束,比 Run 方法多返回程序的 stdout。