Heim > Backend-Entwicklung > Golang > Wie kann ich feststellen, ob STDIN Daten in Go enthält?

Wie kann ich feststellen, ob STDIN Daten in Go enthält?

Barbara Streisand
Freigeben: 2024-12-10 12:32:15
Original
275 Leute haben es durchsucht

How Can I Detect if STDIN Contains Data in Go?

Überprüfung der Eingabe auf STDIN in Go

Dieses Codefragment befasst sich mit dem Problem der Überprüfung der Eingabe auf der Standardeingabe (STDIN) mithilfe der Go-Sprache. Insbesondere stößt der Benutzer auf eine Situation, in der sich sein Befehlszeilendienstprogramm aufgrund des Vorhandenseins einer Zeichenfolge, die an STDIN weitergeleitet wird, anders verhalten muss.

Der bereitgestellte Beispielcode verwendet ioutil.ReadAll(os.Stdin) Funktion zum Lesen aller Bytes von STDIN. Wenn die Länge des Byte-Arrays größer als Null ist, gibt der Code eine entsprechende Meldung aus, die angibt, dass etwas auf STDIN verfügbar ist. Wenn jedoch nichts auf STDIN vorhanden ist, kann der Code beim Warten auf eine End-of-File-Markierung (EOF) hängen bleiben.

Um dieses Problem zu beheben, nutzt der Code das Flag os.ModeCharDevice, um zu bestimmen, ob STDIN kommt von einem Terminal oder einer Leitung. Wenn das Flag „os.ModeCharDevice“ nicht gesetzt ist, zeigt dies an, dass Daten an STDIN weitergeleitet werden, und der Code gibt eine entsprechende Meldung aus. Andernfalls wird davon ausgegangen, dass STDIN von einem Terminal kommt.

Hier ist der geänderte Codeausschnitt, der die os.ModeCharDevice-Prüfung enthält:

stat, _ := os.Stdin.Stat()
if (stat.Mode() & os.ModeCharDevice) == 0 {
    fmt.Println("data is being piped to stdin")
} else {
    fmt.Println("stdin is from a terminal")
}
Nach dem Login kopieren

Dieser Code ermöglicht dem Befehlszeilendienstprogramm effektiv die Unterscheidung zwischen der Pipe-Eingabe und der direkten Terminal-Eingabe, sodass es sich entsprechend verhält.

Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob STDIN Daten in Go enthält?. 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