Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in Stdin nach Daten suchen, ohne sie in Go zu blockieren?

Wie kann ich in Stdin nach Daten suchen, ohne sie in Go zu blockieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-31 11:16:29576Durchsuche

How to Check for Data in Stdin without Blocking in Go?

Prüfung auf Daten in Stdin mit Go

In Go ist die Interaktion mit der Standardeingabe (stdin) oft eine entscheidende Aufgabe bei der Arbeit mit Befehlen und Pipelines. Es kann jedoch eine Herausforderung sein, festzustellen, ob stdin über Daten verfügt, ohne die Ausführung des Programms zu blockieren.

Das Dateiobjekt os.Stdin stellt stdin dar und verfügt über ähnliche Funktionen wie andere Dateiobjekte in Go. Dadurch können wir die Stat-Funktion nutzen, um Informationen über stdin, einschließlich seiner Größe, zu sammeln.

Um festzustellen, ob stdin Daten enthält, können wir seine Größe mit dem folgenden Code überprüfen:

<code class="go">func main() {
    file := os.Stdin
    fi, err := file.Stat()
    if err != nil {
        fmt.Println("file.Stat()", err)
    }
    size := fi.Size()
    if size > 0 {
        fmt.Printf("%v bytes available in Stdin\n", size)
    } else {
        fmt.Println("Stdin is empty")
    }
}</code>

Wenn dieser Code in eine ausführbare Datei kompiliert wird, kann er als Filter zum Verarbeiten von Eingaben verwendet werden, die an stdin weitergeleitet werden. Führen Sie beispielsweise den Befehl echo test | aus ./executable würde „5 Bytes verfügbar in Stdin“ auf der Konsole ausgeben, was darauf hinweist, dass Stdin Daten enthält. Umgekehrt würde beim Ausführen von ./executable ohne Eingabe „Stdin ist leer“ angezeigt.

Dieser Ansatz ermöglicht es Entwicklern, ohne Blockierung nach Daten in stdin zu suchen und mit der Logik ihres Programms entsprechend fortzufahren. Dies ist besonders nützlich, wenn Sie mit Pipelines arbeiten oder Benutzereingaben von stdin verarbeiten.

Das obige ist der detaillierte Inhalt vonWie kann ich in Stdin nach Daten suchen, ohne sie in Go zu blockieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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