Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melaksanakan Perintah Sistem dengan Selamat dengan Argumen Pembolehubah dalam Go?

Bagaimana untuk Melaksanakan Perintah Sistem dengan Selamat dengan Argumen Pembolehubah dalam Go?

DDD
Lepaskan: 2024-12-13 08:00:19
asal
329 orang telah melayarinya

How to Safely Execute System Commands with Variable Arguments in Go?

Melaksanakan Perintah Sistem dengan Argumen Pembolehubah

Apabila melaksanakan perintah sistem yang melibatkan berbilang argumen, perintah itu perlu dipisahkan daripada argumen. Kod di bawah menggambarkan konsep ini:

import (
    "fmt"
    "os/exec"
    "strings"
    "sync"
)

func exeCmd(cmd string, wg *sync.WaitGroup) {
    fmt.Println("command is ", cmd)
    // Splitting head (e.g., "g++") from the rest of the command (e.g., "-c file.cpp")
    parts := strings.Fields(cmd)
    head := parts[0]
    parts = parts[1:len(parts)]

    out, err := exec.Command(head, parts...).Output()
    if err != nil {
        fmt.Printf("%s", err)
    }
    fmt.Printf("%s", out)
    wg.Done() // Signal to waitgroup that this goroutine is done
}

func main() {
    wg := new(sync.WaitGroup)
    wg.Add(3)

    x := []string{
        "echo newline >> foo.o",
        "echo newline >> f1.o",
        "echo newline >> f2.o"}

    go exeCmd(x[0], wg)
    go exeCmd(x[1], wg)
    go exeCmd(x[2], wg)

    wg.Wait()
}
Salin selepas log masuk

Dalam kod ini:

  • exec.Command(kepala, bahagian...) memisahkan arahan daripada argumen menggunakan argumen variadic Go .
  • Pembolehubah kepala mengandungi arahan sistem (cth., "gema").
  • Bahagian-bahagian pembolehubah mengandungi argumen yang tinggal (cth., "baris baharu >> foo.o").
  • Fungsi strings.Fields(cmd) digunakan untuk membahagikan arahan kepada bahagian konstituennya.

Menggunakan pendekatan ini, atur cara boleh melaksanakan perintah sistem dengan bilangan argumen yang sewenang-wenangnya. Ia mengatasi had kod asal, yang gagal untuk arahan dengan berbilang perkataan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah Sistem dengan Selamat dengan Argumen Pembolehubah dalam Go?. 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