Pipe-Erkennung in Go
In Go ist die Erkennung, ob ein Befehl weitergeleitet wird, entscheidend, um sein Verhalten entsprechend anzupassen. Ein weitergeleiteter Befehl empfängt Eingaben von einem anderen Befehl über eine Pipe, während ein nicht weitergeleiteter Befehl direkt mit dem Terminal interagiert.
Um festzustellen, ob ein Befehl weitergeleitet wird, verwenden Sie zur Untersuchung die Funktion os.Stdin.Stat() die Dateiinformationen der Standardeingabe (Stdin). Wenn der Modus der Datei einen Wert mit gelöschtem os.ModeCharDevice-Bit zurückgibt, weist dies darauf hin, dass die Daten aus einer Pipe stammen. Andernfalls deutet es darauf hin, dass die Daten vom Terminal eingegeben werden.
Unten ist ein Beispiel zur Veranschaulichung:
<code class="go">package main import ( "fmt" "os" ) func main() { fi, _ := os.Stdin.Stat() if (fi.Mode() & os.ModeCharDevice) == 0 { fmt.Println("data is from pipe") } else { fmt.Println("data is from terminal") } }</code>
In diesem Skript führt die Funktion os.Stdin.Stat() eine Prüfung durch die mit der Standardeingabe verknüpften Dateiinformationen. Wenn der resultierende Modus eine Datei angibt, die kein Zeichengerät (Pipe) ist, wird „Daten stammen aus Pipe“ ausgegeben. Andernfalls wird „Daten stammen vom Terminal“ ausgegeben.
Durch die Nutzung von os.Stdin.Stat() zur Erkennung der Pipe-Nutzung können Sie Ihre Go-Befehle optimieren, um Pipe-Eingaben effizient zu verarbeiten und ein nahtloses Benutzererlebnis zu bieten.
Das obige ist der detaillierte Inhalt vonWie erkennt man, ob ein Befehl in Go weitergeleitet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!