Maison > Article > développement back-end > Comment puis-je détecter si une commande est transmise dans 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, notamment son mode.
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>
Dans cet exemple, le 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 :
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!