В предыдущем примере мы рассмотрели порождение внешних
процессов. Мы делаем это,
когда нам нужен внешний процесс, доступный для
запущенного процесса Go. Иногда мы просто хотим
полностью заменить текущий процесс 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)
}
}
|
When we run our program it is replaced by |
$ 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 функцию |
Следующий пример: Сигналы (Signals).