Semasa proses pembangunan menggunakan golang, kadangkala anda perlu memanggil program exe luaran untuk menyelesaikan beberapa tugas. Berikut adalah beberapa kaedah golang biasa untuk memanggil exe.
1. Pakej os/exec
Dalam perpustakaan standard golang, anda boleh menggunakan pakej os/exec untuk memanggil arahan dan program luaran. Ia menyediakan satu set fungsi dan struktur mudah untuk memudahkan kami melaksanakan arahan luaran.
Anda boleh menggunakan fungsi Perintah untuk mencipta struktur Cmd dan menentukan arahan yang akan dilaksanakan. Contohnya:
cmd := exec.Command("echo", "hello world")
Arahan ini akan mengeluarkan "hello world" pada terminal.
Menggunakan fungsi Perintah, anda juga boleh melaksanakan fail boleh laku yang lain. Contohnya:
cmd := exec.Command("calc")
Arahan ini akan memulakan atur cara kalkulator pada sistem Windows.
Jika anda perlu menghantar parameter kepada program luaran, anda boleh menggunakan atribut Args untuk menambah parameter pada struktur Cmd. Contohnya:
cmd := exec.Command("ping", "-c", "4", "www.google.com")
Perintah ini akan ping pelayan google pada terminal dan mengeluarkan 4 hasil.
Selepas menggunakan fungsi Perintah untuk melaksanakan arahan, anda boleh menggunakan kaedah Output untuk mendapatkan hasil pelaksanaan. Contohnya:
cmd := exec.Command("ls", "-l") output, err := cmd.Output() if err != nil { fmt.Println(err) } fmt.Println(string(output))
Perintah ini akan menyenaraikan semua fail dalam direktori semasa pada terminal dan mengeluarkan maklumat terperincinya.
2. Pakej syscall
Pakej os/exec hanya menyokong program baris arahan panggilan Jika anda perlu memanggil antara muka lanjutan seperti Windows API atau panggilan sistem Linux, anda boleh menggunakan pakej syscall di perpustakaan standard golang.
Mengambil Windows sebagai contoh, jika anda perlu memanggil Windows API, anda boleh menggunakan fungsi syscall.LoadLibrary dan syscall.GetProcAddress untuk memuatkan perpustakaan pautan dinamik dan dapatkan fungsi API . Contohnya:
dll, err := syscall.LoadLibrary("user32.dll") if err != nil { fmt.Println(err) return } defer syscall.FreeLibrary(dll) proc, err := syscall.GetProcAddress(dll, "MessageBoxW") if err != nil { fmt.Println(err) return } lpText, _ := syscall.UTF16PtrFromString("Hello, World!") lpCaption, _ := syscall.UTF16PtrFromString("Message") syscall.Syscall( uintptr(proc), uintptr(0), uintptr(0), uintptr(unsafe.Pointer(lpText)), uintptr(unsafe.Pointer(lpCaption)), )
Kod ini akan memanggil fungsi MessageBoxW dalam API Windows dalam program untuk muncul tetingkap pop timbul dengan mesej "Hello, World!".
Untuk sistem seperti Linux, anda juga boleh menggunakan pakej syscall untuk memanggil arahan sistem atau fungsi sistem. Contohnya:
cmd := "/bin/ls" args := []string{"-l", "/"} env := os.Environ() err := syscall.Exec(cmd, args, env) if err != nil { log.Fatal(err) }
Kod ini akan memanggil perintah /bin/ls sistem Linux dalam program dan mengeluarkan semua fail dalam direktori akar dan maklumat terperincinya.
Ringkasan:
Di atas adalah cara biasa untuk golang memanggil kaedah exe. Pakej os/exec boleh digunakan untuk memanggil program baris arahan dengan mudah dan mudah, manakala pakej syscall boleh memanggil antara muka peringkat tinggi dengan lebih fleksibel seperti arahan sistem, API dan fungsi. Dalam pembangunan sebenar, kaedah yang berbeza boleh dipilih untuk menyelesaikan tugas mengikut situasi tertentu.
Atas ialah kandungan terperinci golang memanggil kaedah exe. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!