# Golang 执行外部程序 需要使用 os/exec 包。 示例如下: ```go 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。