Maison  >  Article  >  développement back-end  >  Comment puis-je détecter si une commande est transmise dans Go ?

Comment puis-je détecter si une commande est transmise dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 02:23:02132parcourir

How can I detect if a command is being piped in Go?

Détection des commandes redirigées dans Go

Lors de l'exécution de commandes dans Go, il peut y avoir des cas où il est nécessaire de déterminer si la commande est redirigée . Les commandes redirigées sont utiles pour traiter les données d'une autre commande ou source directement via les flux d'entrée/sortie standard.

Détection des commandes redirigées avec os.Stdin.Stat()

Pour détecter si une commande est redirigée, on peut utiliser la méthode os.Stdin.Stat() pour examiner le mode du flux d'entrée standard. La méthode Stat() renvoie une structure os.FileInfo contenant diverses informations sur le fichier, notamment son mode.

Exemple :

<code class="go">package main

import (
    "fmt"
    "os"
)

func main() {
    fi, _ := os.Stdin.Stat()
    
    if (fi.Mode() & os.ModeCharDevice) == 0 {
        fmt.Println("data is from pipe")
    } else {
        fmt.Println("data is from terminal")
    }
}</code>

Dans cet exemple, le La constante os.ModeCharDevice est utilisée pour vérifier si le mode de l'entrée standard est un périphérique de caractères. Si ce n’est pas le cas, on peut en déduire que les données proviennent d’un canal. À l'inverse, si le mode est un périphérique de caractères, alors les données proviennent d'un terminal.

Comment ça marche :

Lorsqu'une commande est transmise, l'entrée standard stream est connecté au flux de sortie d’une autre commande. Cela change le mode du flux d’entrée standard en mode tube au lieu d’un mode périphérique de caractères. En examinant le mode du flux d'entrée standard, nous pouvons déterminer si la commande est redirigée.

Applications :

La détection des commandes redirigées peut être utile dans divers scénarios, tels que comme :

  • Contrôler le comportement d'une commande selon qu'elle est redirigée ou non.
  • Fournir différents messages d'erreur ou instructions d'utilisation en fonction de la source d'entrée.
  • Optimisation du code pour différents scénarios de saisie.

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