Ausführen von Piped-Befehlen in Golang mit exec.Command
Die Frage ergibt sich aus der Notwendigkeit, einen langen Piped-Befehl mit Phantomjs und ffmpeg nahtlos auszuführen innerhalb eines Golang-Programms. Der ursprüngliche Befehl, der direkt im Terminal ausgeführt wird, funktioniert einwandfrei. Es erweist sich jedoch als schwierig, denselben Vorgang mit dem Paket os/exec erneut zu erstellen.
Die bereitgestellte Lösung besteht darin, die Funktion exec.Command zu verwenden, um den gewünschten Befehl zu initiieren. Allerdings berücksichtigt dieser erste Ansatz das Pipe-Trennzeichen nicht und ist daher unwirksam.
Um diese Einschränkung zu beheben, verwendet die modifizierte Lösung einen umfassenderen Ansatz, indem sie einen Shell-Interpreter zur Verarbeitung des Befehls aufruft. In diesem Fall wird die Bash-Shell mit bash aufgerufen, während der eigentliche Befehl in -c als Argument gekapselt ist. Diese Technik ermöglicht es der Shell, den Befehl zu interpretieren und unter Berücksichtigung des Pipe-Trennzeichens genau auszuführen.
Der resultierende Code führt den Pipe-Befehl nahtlos aus und erfasst alle Standardausgaben, die dann in Ihrem Golang-Programm verwendet werden können. Dieser Ansatz macht das Schreiben von Zwischenbilddateien überflüssig, was den Prozess rationalisiert und eine optimale Leistung gewährleistet.
Das obige ist der detaillierte Inhalt vonWie kann ich Piped-Befehle (z. B. phantomjs | ffmpeg) in Golang ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!