Heim > Backend-Entwicklung > Golang > Wie führt man Piped-Befehle effektiv mit „exec.Command()' von Go aus?

Wie führt man Piped-Befehle effektiv mit „exec.Command()' von Go aus?

Barbara Streisand
Freigeben: 2024-12-15 20:36:11
Original
945 Leute haben es durchsucht

How to Execute Piped Commands Effectively Using Go's `exec.Command()`?

Ausführen von Piped-Befehlen mit Gos exec.Command()

Beim Ausführen von Befehlen mit exec.Command() ist es möglich, Befehle auszuführen, die Pipes enthalten, sodass Sie dies tun können Verketten Sie mehrere Befehle miteinander.

Zum Beispiel führt der folgende Befehl ps cax und aus Erfolgreich:

out, err := exec.Command("ps", "cax").Output()
Nach dem Login kopieren

Der Versuch, die Ausgabe von ps cax mit dem folgenden Befehl an grep myapp weiterzuleiten, schlägt jedoch fehl:

out, err := exec.Command("ps", "cax | grep myapp").Output()
Nach dem Login kopieren

Um dieses Problem zu lösen, können wir eine idiomatischere Vorgehensweise anwenden Ansatz mit Pipes in Go:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    grep := exec.Command("grep", "redis")
    ps := exec.Command("ps", "cax")

    // Connect ps's stdout to grep's stdin.
    pipe, _ := ps.StdoutPipe()
    defer pipe.Close()

    grep.Stdin = pipe

    // Start ps first.
    ps.Start()

    // Run and retrieve the output of grep.
    res, _ := grep.Output()

    fmt.Println(string(res))
}
Nach dem Login kopieren

In diesem Beispiel erstellen wir zwei exec.Cmd-Strukturen, eine für jeden Befehl. und dann eine Pipe zwischen der Standardausgabe von ps und der Standardausgabe von grep einrichten. Indem wir ps zuerst starten, stellen wir sicher, dass seine Ausgabe für grep zur Nutzung verfügbar ist. Anschließend führen wir grep aus und rufen die Ausgabe ab, wodurch die beiden Befehle effektiv miteinander verkettet werden.

Das obige ist der detaillierte Inhalt vonWie führt man Piped-Befehle effektiv mit „exec.Command()' von Go aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage