Exec.Command() bietet in Go eine bequeme Möglichkeit, externe Befehle auszuführen. Allerdings kann die Handhabung der Eingabeumleitung eine Herausforderung darstellen. In dieser Diskussion wird untersucht, wie Sie mit exec.Command() den Befehl /sbin/iptables-restore < ausführen. /etc/iptables.conf.
Zunächst wird versucht, den Befehl mit < einzurichten. und < /etc/iptables.conf ist fehlgeschlagen. Auch das Weiterleiten des Dateinamens über stdin hat nicht funktioniert. Um die Eingabe stattdessen an stdin umzuleiten, ist es notwendig, zuerst den Inhalt der Eingabedatei /etc/iptables.conf zu lesen.
So erreichen Sie dies:
package main import ( "io" "io/ioutil" "log" "os/exec" ) func main() { bytes, err := ioutil.ReadFile("/etc/iptables.conf") if err != nil { log.Fatal(err) } cmd := exec.Command("/sbin/iptables-restore") stdin, err := cmd.StdinPipe() if err != nil { log.Fatal(err) } err = cmd.Start() if err != nil { log.Fatal(err) } _, err = io.WriteString(stdin, string(bytes)) if err != nil { log.Fatal(err) } }
Dieser Ansatz ermöglicht es uns, den Inhalt der Datei zu lesen, ihn an die stdin des Befehls weiterzuleiten und dann den Befehl mit der gewünschten Eingabeumleitung zu starten.
Das obige ist der detaillierte Inhalt vonWie leite ich Eingaben in Go zu „exec.Command()' um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!