Maison > développement back-end > Golang > Comment puis-je vérifier les entrées disponibles sur STDIN dans Golang ?

Comment puis-je vérifier les entrées disponibles sur STDIN dans Golang ?

DDD
Libérer: 2024-12-18 20:06:11
original
681 Les gens l'ont consulté

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

Vérification des entrées disponibles sur STDIN dans Golang

Dans certains scénarios de ligne de commande, comprendre si une entrée existe sur stdin est crucial pour un comportement personnalisé . Prenons l'exemple suivant :

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")
    }
}
Copier après la connexion

Pendant que ce code fonctionne pour les entrées redirigées, il s'arrête à ioutil.ReadAll(os.Stdin) lorsqu'aucune entrée n'est présente. Cet article aborde ce problème en proposant une solution pour déterminer la disponibilité des données stdin.

Solution : vérifier le mode fichier

La solution réside dans l'examen du mode fichier de le flux stdin. Lorsque stdin est un fichier normal (par exemple, un terminal), son mode inclut os.ModeCharDevice, indiquant l'état du périphérique de caractères. À l’inverse, si l’entrée est redirigée, le mode n’a pas cet indicateur. Le code suivant illustre cette approche :

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")
    }
}
Copier après la connexion

Avec cette modification, votre programme peut faire la distinction entre les entrées stdin canalisées et basées sur le terminal, permettant des ajustements de comportement appropriés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal