Heim >Backend-Entwicklung >Golang >Wie können Variadic-Argumente den Fehler „Ausführbare Datei nicht gefunden' beim Ausführen dynamischer Systembefehle in Go beheben?

Wie können Variadic-Argumente den Fehler „Ausführbare Datei nicht gefunden' beim Ausführen dynamischer Systembefehle in Go beheben?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-08 13:31:11773Durchsuche

How Can Variadic Arguments Solve

Verwendung variadischer Argumente für die dynamische Befehlsausführung

In Situationen, in denen die Anzahl der Argumente für einen Systembefehl unbekannt ist, ist die Verwendung einer Aufteilung sinnvoll -and-assemble-Ansatz mit verschiedenen Argumenten bietet eine elegante Lösung.

Wie im bereitgestellten Code beobachtet, ist der Versuch, komplex auszuführen Bei Befehlen mit mehreren Argumenten würden Fehler wie „ausführbare Datei nicht gefunden“ auftreten. Dies liegt daran, dass der Code von einem Einzelwortbefehl ausging, ohne die Argumente separat anzugeben.

Um diese Einschränkung zu überwinden, ziehen Sie die folgende Lösung in Betracht:

func exeCmd(cmd string, wg *sync.WaitGroup) {
    fmt.Println("command is ", cmd)
    // Split command into head (e.g., 'g++') and parts (remaining arguments)
    parts := strings.Fields(cmd)
    head := parts[0]
    parts = parts[1:]

    out, err := exec.Command(head, parts...).Output()
    if err != nil {
        fmt.Printf("%s", err)
    }
    fmt.Printf("%s", out)
    wg.Done()
}

Dieser aktualisierte Code verwendet die Variadic-Argument-Funktion von Go. gekennzeichnet durch drei Punkte „...“. So funktioniert es:

  1. Aufteilen des Befehls: Die Befehlszeichenfolge wird in einen Kopf (das erste Wort, z. B. 'g') und Teile (die restlichen Argumente) aufgeteilt. .
  2. Rekonstruktion des Befehls: Der Kopf wird dann als erstes Argument an übergeben exec.Command(). Die verbleibenden Teile werden automatisch als variable Argumente übergeben, wodurch effektiv der vollständige Befehl mit seinen ursprünglichen Argumenten erstellt wird.
  3. Ausführen des Befehls: Der erstellte Befehl wird ausgeführt und die Ausgabe oder etwaige Fehler werden behandelt entsprechend.

Durch die Verwendung verschiedener Argumente bietet diese Lösung Flexibilität bei der Ausführung von Systembefehlen mit einer unterschiedlichen Anzahl von Argumenten, was sie besonders wertvoll macht in Situationen, in denen Befehle dynamisch generiert werden.

Das obige ist der detaillierte Inhalt vonWie können Variadic-Argumente den Fehler „Ausführbare Datei nicht gefunden' beim Ausführen dynamischer Systembefehle in Go beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn