"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 déterminer si l’entrée est redirigée vers Go ?

Comment déterminer si l’entrée est redirigée vers Go ?

Publié le 2024-12-11
Parcourir:768

How to Determine if Input is Piped in Go?

Détermination de l'entrée redirigée dans Go

Comprendre si une commande est redirigée est crucial dans les applications Go, en particulier lors du traitement de données provenant de diverses sources. Cet article explique comment déterminer si une commande est redirigée ou non, permettant aux développeurs d'adapter leur code en conséquence.

Solution

Go fournit le os.Stdin.Stat( ) fonction pour récupérer les informations de fichier associées à l'entrée standard. Ces informations incluent le mode fichier, qui indique si l'entrée provient d'un terminal ou d'un tube. L'extrait de code suivant montre comment utiliser os.Stdin.Stat() à cette fin :

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

Lorsque la commande est redirigée, fi.Mode() & os.ModeCharDevice sont évalués à 0, indiquant que l'entrée ne provient pas d'un périphérique de caractères (tel qu'un terminal). À l'inverse, une valeur non nulle signifie que l'entrée provient d'un périphérique de caractères.

Cette approche fournit un moyen fiable de distinguer les entrées redirigées et non redirigées, permettant aux développeurs d'adapter le comportement de leurs applications en conséquence.

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