golang memanggil kaedah exe

PHPz
Lepaskan: 2023-05-10 12:06:07
asal
2474 orang telah melayarinya

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.

  1. Melaksanakan arahan

Anda boleh menggunakan fungsi Perintah untuk mencipta struktur Cmd dan menentukan arahan yang akan dilaksanakan. Contohnya:

cmd := exec.Command("echo", "hello world")
Salin selepas log masuk

Arahan ini akan mengeluarkan "hello world" pada terminal.

  1. Laksanakan program

Menggunakan fungsi Perintah, anda juga boleh melaksanakan fail boleh laku yang lain. Contohnya:

cmd := exec.Command("calc")
Salin selepas log masuk

Arahan ini akan memulakan atur cara kalkulator pada sistem Windows.

  1. Pas parameter

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")
Salin selepas log masuk

Perintah ini akan ping pelayan google pada terminal dan mengeluarkan 4 hasil.

  1. Laksanakan arahan dan dapatkan hasilnya

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))
Salin selepas log masuk

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.

  1. Windows API

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)),
)
Salin selepas log masuk

Kod ini akan memanggil fungsi MessageBoxW dalam API Windows dalam program untuk muncul tetingkap pop timbul dengan mesej "Hello, World!".

  1. Panggilan sistem Linux

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan