


Comment récupérer et traiter la sortie en temps réel des commandes Shell dans Go ?
Récupération de sortie en temps réel dans Go pour les commandes Shell
Dans Golang, le package os/exec fournit les moyens d'exécuter des commandes shell. Cependant, lorsque ces commandes renvoient une sortie en temps réel ou des mises à jour de progression, il devient nécessaire de récupérer et de traiter ces informations de manière dynamique. Voici comment y parvenir :
Pour capturer et traiter la sortie en temps réel d'une commande shell dans Go, envisagez l'approche suivante :
package main<p>importer (</p><pre class="brush:php;toolbar:false">"bufio" "fmt" "io" "os" "os/exec" "strings"
)
func main() {
cmdName := "ffmpeg -i t.webm -acodec aac -vcodec libx264 cmd1.mp4" cmdArgs := strings.Fields(cmdName) cmd := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...) stderr, _ := cmd.StderrPipe() cmd.Start() go printProgress(stderr) cmd.Wait()
}
// pour imprimer les informations traitées lorsque stderr obtient une nouvelle ligne
func printProgress(stderr io.ReadCloser) {
r := bufio.NewReader(stderr) for { line, _, err := r.ReadLine() if err != nil { fmt.Println("error in reading from stderr:", err) break } // Process the line (e.g., extract the progress percentage) percentage, err := extractPercentage(string(line)) if err != nil { fmt.Println("error in extracting percentage:", err) continue } // Print the updated progress ratio fmt.Printf("%s%%", percentage) }
>
// extractPercentage analyse la ligne de sortie ffmpeg et renvoie la progression pourcentage.
// Cela suppose le format de sortie dans la question (par exemple, "frame=... size=... time=... bitrate=...")
func extractPercentage(line string) (chaîne, erreur) {
parts := strings.Split(line, " ") if len(parts) <p>}<br></p>
Cette approche utilise des canaux pour récupérer la sortie en temps réel du flux stderr de la commande. Il lit et traite en permanence la sortie, extrayant les informations de progression et les imprimant de manière dynamique. Notez que la fonction extractPercentage dans cet exemple extrait le pourcentage de la sortie ffmpeg, en supposant le format spécifique mentionné dans la question. Cela devra peut-être être ajusté en fonction du format de sortie spécifique de votre commande shell.
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!

Theencoding/binarypackageinGoisessentialforhandlingbinarydata,offeringfunctionstoreadandwritedatainbothbig-endianandlittle-endianformats.1)It'sidealfornetworkprotocols,enablingserializationanddeserializationofstructureddatalikepacketheadersandpayload

ThesentialFunctionsingo'sBytespackageThatyouneedTokNoware: 1) bytes.indexforsechingwithinbyteslices, 2) bytes.splitforparsing Données, 3) Bytes.JoinforconcatenatingSlices, 4) Bytes.ContainsforcheckingSubslicePresence, et5) Bytes.Replaceallfordatatransformatio

GooffersalterativestothestringspackageforstringManipulation: 1) therexpackageforcomplexpatternmatching, 2) thestrconvpackagefornumericconversions, et3) externallibrarylikestrutilforspecializedoperations.

Toeffectivelyusego'sencoding / binarypackagefor pourhlingvariousDatatypes, suivi de l'essence: 1) spécifient paruder (par exemple, binary.littleendien)

La raison de la maîtrise du package des octets est qu'elle peut améliorer considérablement l'efficacité et les performances des tranches de traitement des octets. 1) Le package d'octets fournit des outils puissants, tels que les octets.Contient la recherche de séquences d'octets, 2) le type d'octets.

Le package "Strings" de Go fournit des fonctionnalités riches pour rendre le fonctionnement des cordes efficace et simple. 1) Utilisez des chaînes.Contains () pour vérifier les sous-chaînes. 2) Strings.split () peut être utilisé pour analyser les données, mais il doit être utilisé avec prudence pour éviter les problèmes de performances. 3) Strings.join () convient aux chaînes de mise en forme, mais pour les petits ensembles de données, la boucle = est plus efficace. 4) Pour les grandes chaînes, il est plus efficace de construire des chaînes à l'aide de chaînes.

Go utilise le package "Strings" pour les opérations de chaîne. 1) Utilisez des chaînes. 2) Utilisez la fonction Strings.Contient pour trouver des sous-chaînes. 3) Utilisez les chaînes. Replace la fonction pour remplacer les chaînes. Ces fonctions sont efficaces et faciles à utiliser et conviennent à diverses tâches de traitement des chaînes.

TheyTespackageingOssentialforeffictiveBytesLemanIpulation, offrant des fonctions de dynamisme, index, AndrePlaceForsearchingandModifierBinaryData.EtenhancesperformanceAndCodereadabilité, faisant en œuvre


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP
