Comprendre le piping dans Go
Le piping est une technique puissante dans les systèmes de type Unix qui permet d'utiliser la sortie d'une commande comme entrée pour un autre. Dans Go, il est crucial de déterminer si une commande est redirigée ou non pour une gestion efficace des ressources.
Détection des commandes redirigées
Pour détecter si une commande est redirigée, nous pouvons utilisez os.Stdin.Stat(). Cette méthode renvoie des informations sur le périphérique d'entrée standard. Plus précisément, nous nous intéressons au champ Mode, qui indique le mode fichier de l'appareil.
Exemple de code
Le code Go suivant montre comment détecter si une commande est redirigé :
<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>
Lorsque les données sont redirigées vers la commande, le mode fichier n'indiquera pas de périphérique de caractères (c'est-à-dire (fi.Mode() & os.ModeCharDevice) == 0), et le le message correspondant sera imprimé. Sinon, la commande n'est pas redirigée et l'entrée provient d'un terminal.
Scénario d'utilisation
Cette technique peut être utile dans divers scénarios, tels que :
En comprenant les mécanismes de la tuyauterie et en utilisant os.Stdin.Stat(), vous pouvez améliorer la robustesse et l'efficacité de vos programmes Go qui gèrent les entrées redirigées.
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!