Heim > Backend-Entwicklung > Golang > Wie kann ich in Golang nach verfügbaren Eingaben für STDIN suchen?

Wie kann ich in Golang nach verfügbaren Eingaben für STDIN suchen?

DDD
Freigeben: 2024-12-18 20:06:11
Original
626 Leute haben es durchsucht

How Can I Check for Available Input on STDIN in Golang?

Prüfung auf verfügbare Eingaben auf STDIN in Golang

In bestimmten Befehlszeilenszenarien ist das Verständnis, ob Eingaben auf stdin vorhanden sind, für maßgeschneidertes Verhalten von entscheidender Bedeutung . Betrachten Sie das folgende Beispiel:

package main

import (
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    bytes, _ := ioutil.ReadAll(os.Stdin)

    if len(bytes) > 0 {
        fmt.Println("Something on STDIN: " + string(bytes))
    } else {
        fmt.Println("Nothing on STDIN")
    }
}
Nach dem Login kopieren

Während dieser Code für weitergeleitete Eingaben funktioniert, stoppt er bei ioutil.ReadAll(os.Stdin), wenn keine Eingabe vorhanden ist. Dieser Artikel befasst sich mit diesem Problem und bietet eine Lösung zur Bestimmung der Verfügbarkeit von Standarddaten.

Lösung: Überprüfen des Dateimodus

Die Lösung liegt in der Untersuchung des Dateimodus von der stdin-Stream. Wenn stdin eine reguläre Datei ist (z. B. ein Terminal), enthält ihr Modus os.ModeCharDevice, der den Status des Zeichengeräts anzeigt. Wenn die Eingabe hingegen über eine Pipeline erfolgt, fehlt dem Modus dieses Flag. Der folgende Code demonstriert diesen Ansatz:

package main

import (
    "fmt"
    "os"
)

func main() {
    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

Mit dieser Änderung kann Ihr Programm zwischen Pipe- und Terminal-basierten stdin-Eingaben unterscheiden und so entsprechende Verhaltensanpassungen ermöglichen.

Das obige ist der detaillierte Inhalt vonWie kann ich in Golang nach verfügbaren Eingaben für STDIN suchen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage