No exemplo anterior foi apresentada uma forma de
invocar processos externos.
Isto é feito quando é necessário um processo externo
acessível a um programa Go sendo executado.
Algumas vezes, no entanto, é necessário substituir
completamente o processo Go corrente, por um outro
(talvez até não-Go). Para fazer isto, será utilizada
a implementação da clássica função
|
|
package main |
|
import ( "os" "os/exec" "syscall" ) |
|
func main() { |
|
Para este exemplo, será executado |
binary, lookErr := exec.LookPath("ls") if lookErr != nil { panic(lookErr) } |
|
args := []string{"ls", "-a", "-l", "-h"} |
|
env := os.Environ() |
Aqui está a chamada à |
execErr := syscall.Exec(binary, args, env) if execErr != nil { panic(execErr) } } |
Ao rodar o programa, ele é substituído pelo |
$ 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 |
Note que Go não oferece a função |
Próximo exemplo: Signals.