在前面的例子中,我们了解了生成外部进程的知识,
当我们需要在运行的 Go 流程中访问的外部流程时,便可以执行此操作。
但是有时候,我们只想用其它(也许是非 Go)的进程,来完全替代当前的 Go 进程。
这时,我们可以使用经典的 |
|
package main |
|
import ( "os" "os/exec" "syscall" ) |
|
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 |
注意 Go 没有提供 Unix 经典的 |
下一个例子: 信号