"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je détecter si une commande est transmise dans Go ?

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

Publié le 2024-11-13
Parcourir:543

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, y compris son mode.

Exemple :

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")
    }
}

Dans cet exemple, 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 d'entrée.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3