|
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.