Maison >développement back-end >Golang >Comment puis-je diffuser une sortie de commande partielle en temps réel pendant l'exécution ?
Progression de la sortie des commandes en streaming
Dans le processus d'exécution des commandes, il est souvent nécessaire de diffuser la sortie à la fois vers son emplacement de sortie désigné et un fichier journal en temps réel. Cependant, lorsqu'il s'agit de processus longs, la méthode cmd.StdoutPipe fournit uniquement le résultat final sous forme de chaîne. Cet article explique comment activer la diffusion en continu d'une sortie partielle pendant le processus d'exécution de la commande.
L'exemple fourni dans la question utilise bufio.NewScanner pour lire la sortie standard via un canal. Une idée fausse courante est qu’il se lit ligne par ligne. En réalité, il lit les entrées par nouvelles lignes telles que définies par la fonction bufio.ScanLines. Si la commande exécutée ne produit pas de nouvelles lignes, la sortie ne sera pas renvoyée immédiatement.
Solutions de contournement :
Pour surmonter cette limitation, envisagez des approches alternatives :
Il est crucial de lire à la fois la sortie standard et l'erreur pour éviter un blocage potentiel dans le processus enfant en raison de tampons pleins. Par défaut, la sortie standard et les flux d'erreurs du processus enfant sont ignorés. Cependant, des messages d'erreur manquants peuvent survenir si le flux d'erreur standard n'est pas lu.
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!