前回の例では、外部プロセスを生成する
例を見ました。これは、実行中の 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 の |
Next example: Signals.