Bestimmen von über Pipes übertragenen Eingaben in Go
In Go-Anwendungen ist es von entscheidender Bedeutung, zu verstehen, ob ein Befehl über Pipes weitergeleitet wird, insbesondere bei der Verarbeitung von Daten aus verschiedenen Quellen. In diesem Artikel wird untersucht, wie Sie feststellen können, ob ein Befehl über eine Pipeline weitergeleitet wird oder nicht, sodass Entwickler ihren Code entsprechend anpassen können.
Lösung
Go stellt os.Stdin.Stat( )-Funktion zum Abrufen der mit der Standardeingabe verknüpften Dateiinformationen. Zu diesen Informationen gehört der Dateimodus, der angibt, ob die Eingabe von einem Terminal oder einer Pipe stammt. Der folgende Codeausschnitt zeigt, wie os.Stdin.Stat() für diesen Zweck verwendet wird:
<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>
Wenn der Befehl weitergeleitet wird, wird fi.Mode() & os.ModeCharDevice zu 0 ausgewertet, was anzeigt, dass die Die Eingabe erfolgt nicht von einem Zeichengerät (z. B. einem Terminal). Umgekehrt bedeutet ein Wert ungleich Null, dass die Eingabe von einem Zeichengerät stammt.
Dieser Ansatz bietet eine zuverlässige Möglichkeit, zwischen Eingaben mit und ohne Pipeline zu unterscheiden, sodass Entwickler das Verhalten ihrer Anwendungen entsprechend anpassen können.
Das obige ist der detaillierte Inhalt vonWie kann festgestellt werden, ob die Eingabe in Go weitergeleitet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!