Maison > Article > développement back-end > Comment puis-je exécuter une commande redirigée (par exemple, phantomjs | ffmpeg) dans Go à l'aide du package « os/exec » ?
Exécuter une commande avec un tube en Go en utilisant exec
Lors de la tentative d'exécution d'une commande avec un tube en Go à l'aide de os/exec package, il est crucial de comprendre comment fonctionne le mécanisme du tuyau. Le premier paramètre de la fonction Command() représente l'exécutable et il est distinct du tube lui-même. Pour réussir à établir un canal, nous devons exploiter des commandes externes comme bash ou cmd pour gérer l'aspect piping.
Considérez la commande suivante :
phantomjs runner.js | ffmpeg -y -c:v png -f image2pipe -r 25 -t 10 -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart dragon.mp4
Cette commande implique d'utiliser phantomjs pour générer des images qui sont ensuite redirigés vers ffmpeg pour créer une vidéo. Pour exécuter cette commande avec un tube dans Go, nous pouvons utiliser le code suivant :
cmd := exec.Command("bash", "-c", cmdString) output, err := cmd.Output() if err != nil { return fmt.Sprintf("Failed to execute command: %s", cmdString) } fmt.Println(string(output))
Dans cet exemple, nous créons une commande avec bash comme exécutable et spécifions la chaîne de commande comme argument. La méthode Output() capture la sortie standard et l’erreur standard combinées sous forme de tableau d’octets. Enfin, nous imprimons le résultat sous forme de chaîne.
En exploitant la puissance des commandes externes telles que bash ou cmd, nous pouvons établir de manière transparente des canaux entre les commandes dans Go à l'aide du package os/exec, ce qui nous permet d'exécuter des pipelines complexes. efficacement.
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!