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:
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")
}
}
Wenn der Befehl weitergeleitet wird, wird fi.Mode() & os.ModeCharDevice zu 0 ausgewertet, was anzeigt, dass die Eingabe nicht von einem Zeichengerät (z. B. einem Terminal) stammt. 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3