Maison > développement back-end > Golang > Comment puis-je détecter si STDIN contient des données dans Go ?

Comment puis-je détecter si STDIN contient des données dans Go ?

Barbara Streisand
Libérer: 2024-12-10 12:32:15
original
276 Les gens l'ont consulté

How Can I Detect if STDIN Contains Data in Go?

Vérification de l'entrée sur STDIN dans Go

Cet extrait de code résout le problème de la vérification de l'entrée sur l'entrée standard (STDIN) à l'aide du langage Go. En particulier, l'utilisateur rencontre une situation dans laquelle son utilitaire de ligne de commande doit se comporter différemment en fonction de la présence d'une chaîne redirigée vers STDIN.

L'exemple de code fourni utilise ioutil.ReadAll(os.Stdin) fonction pour lire tous les octets de STDIN. Si la longueur du tableau d'octets est supérieure à zéro, le code imprime un message approprié indiquant que quelque chose est disponible sur STDIN. Cependant, lorsqu'il n'y a rien sur STDIN, le code peut rester bloqué en attendant un marqueur de fin de fichier (EOF).

Pour résoudre ce problème, le code exploite l'indicateur os.ModeCharDevice pour déterminer si STDIN provient d'un terminal ou d'un tuyau. Si l'indicateur os.ModeCharDevice n'est pas défini, cela indique que les données sont acheminées vers STDIN et le code imprime un message en conséquence. Sinon, il suppose que STDIN provient d'un terminal.

Voici l'extrait de code modifié intégrant la vérification os.ModeCharDevice :

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

Ce code permet effectivement à l'utilitaire de ligne de commande de distinguer entre l'entrée canalisée et l'entrée directe du terminal, lui permettant de se comporter en conséquence.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal