|
Ở ví dụ trước chúng ta đã xem qua khởi tạo các
process bên ngoài. Chúng ta làm
như thế này khi cần một process bên ngoài có thể
truy cập từ một process Go đang chạy. Đôi khi chúng ta
chỉ muốn hoàn toàn thay thế process Go hiện tại bằng
một process khác (có thể không phải process của Go).
Để làm điều này chúng ta sẽ sử dụng hàm
|
|
![]()
package main |
|
import ( "os" "os/exec" "syscall" ) |
|
func main() { |
|
|
Ở trong ví dụ này chúng ta sẽ thực thi lệnh |
binary, lookErr := exec.LookPath("ls")
if lookErr != nil {
panic(lookErr)
}
|
|
|
args := []string{"ls", "-a", "-l", "-h"}
|
|
|
env := os.Environ()
|
|
Đây mới chính là lệnh |
execErr := syscall.Exec(binary, args, env)
if execErr != nil {
panic(execErr)
}
}
|
|
Khi chạy chương trình của chúng ta,
process sẽ được thay thế bởi |
$ 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 |
|
Lưu ý rằng Go không cung cấp một hàm |
Ví dụ tiếp theo: Signals.