Maison > développement back-end > Golang > Ma commande Go reçoit-elle des données d'un canal ?

Ma commande Go reçoit-elle des données d'un canal ?

Mary-Kate Olsen
Libérer: 2024-11-05 03:27:02
original
735 Les gens l'ont consulté

Is My Go Command Receiving Data from a Pipe?

Comment déterminer si une commande est redirigée dans Go ?

Lorsque vous travaillez avec des entrées et des sorties dans Go, il est souvent nécessaire de déterminer si une commande est diffusée ou non. Le piping permet de transmettre des données de la sortie d'un processus à l'entrée d'un autre via un tube Unix.

Par exemple :

<code class="sh">cat test.txt | mygocommand # Piped
mygocommand # Not piped</code>
Copier après la connexion

Cette distinction peut être importante pour personnaliser le comportement de votre application. .

Solution

Go fournit un moyen de vérifier si stdin est redirigé en utilisant os.Stdin.Stat(). Voici un 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>
Copier après la connexion

Lorsque la commande est redirigée (comme dans le premier exemple), le résultat sera :

data is from pipe
Copier après la connexion

Sinon, ce sera :

data is from terminal
Copier après la connexion

Comment ça marche

La fonction os.Stdin.Stat() renvoie un objet FileInfo contenant des informations sur le descripteur de fichier stdin. La méthode Mode() de FileInfo renvoie un mode de fichier qui inclut des informations sur le type de fichier. Si le mode renvoyé inclut l'indicateur os.ModeCharDevice, cela indique que le fichier est un périphérique de caractères, tel qu'un terminal. Si ce n'est pas le cas, cela indique que le fichier est un fichier normal ou un tube.

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