/*
go进程执行 去触发执行一个外部进程
go进程里面可以访问外部进程的信息
执行一个外部进程来代替当前的go进程
go 提供一个exec函数
*/
package main
import (
"os"
"os/exec"
"syscall"
)
func main() {
/*
本例中我们使用ls来演示
go需要一个该命令的完成路径
exec.LookPath 函数来找到他
*/
binary, lookErr := exec.LookPath("ls")
if lookErr != nil {
panic(lookErr)
}
/*
Exec函数需要一个切片参数 我们给ls命令一些常见参数
注意第一个参数必须是程序名称
*/
args := []string{"ls", "-a", "-l", "-h"}
/*
exec还需要一些环境变量 这里我们提供当前的系统环境
*/
env := os.Environ()
/*
这里是os.Exec调用
如果一切顺利
我们的原进程将终止
然后启动一个新的ls进程
如果有错误发生 我们将获得一个返回值
*/
execErr := syscall.Exec(binary, args, env)
if execErr != nil {
panic(execErr)
}
}