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

Comment détecter si une commande est transmise en Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 16:57:02500parcourir

How to Detect If a Command is Piped in Go?

Détection de canal dans Go

Dans Go, détecter si une commande est canalisée est crucial pour adapter son comportement de manière appropriée. Une commande redirigée reçoit les entrées d'une autre commande via un tube, tandis qu'une commande non redirigée interagit directement avec le terminal.

Pour déterminer si une commande est redirigée, utilisez la fonction os.Stdin.Stat() pour examiner les informations du fichier de l'entrée standard (Stdin). Si le mode du fichier renvoie une valeur avec le bit os.ModeCharDevice effacé, cela indique que les données proviennent d'un canal. Sinon, cela suggère que les données sont saisies depuis le terminal.

Voici un exemple pour illustrer :

<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 ce script, la fonction os.Stdin.Stat() vérifie les informations de fichier associées à l’entrée standard. Si le mode résultant indique un fichier qui n'est pas un périphérique de caractères (pipe), il affiche "les données proviennent d'un tube". Sinon, il affiche « les données proviennent du terminal ».

En exploitant os.Stdin.Stat() pour détecter l'utilisation des canaux, vous pouvez optimiser vos commandes Go pour gérer efficacement les entrées canalisées et offrir une expérience utilisateur transparente.

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