这是来自GoByExample的例子,代码在https://gobyexample.com/execing-processes。
把新程序加载到自己的内存。
与Spawn不同,执行外部程序并不会返回到原进程中,也就是让外部程序完全取代本进程。
package main import "syscall" import "os" import "os/exec" func main() { binary, lookErr := exec.LookPath("ls") if lookErr != nil { panic(lookErr) } args := []string{"ls", "-a", "-l", "-h"} env := os.Environ() execErr := syscall.Exec(binary, args, env) if execErr != nil { panic(execErr) } }
$ go run execing-processes.go total 16 drwxr-xr-x 4 mark 136B Oct 3 16:29 . drwxr-xr-x 91 mark 3.0K Oct 3 12:50 .. -rw-r--r-- 1 mark 1.3K Oct 3 16:28 execing-processes.go
如果你的程序就是用来执行外部程序的,例如后面提到的项目实例Run,那使用syscall.Exec执行外部程序就最合适了。注意调用该函数后,本进程后面的代码将不可能再执行了。
syscall.Exec
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8