Verwenden child_process.execSync aber halten Sie die Ausgabe in der Konsole
Ich würde gerne die execSync
Methode, die Hinzugefügt wurde, in NodeJS 0.12, haben aber immer noch die Ausgabe in der Konsole-Fenster, aus dem ich lief die Knoten script.
E. g. wenn ich eine NodeJS-Skript mit der folgenden Zeile möchte ich sehen, die vollständige Ausgabe des rsync-Befehl "live" in der console:
require('child_process').execSync('rsync -avAXz --info=progress2 "/src" "/dest"');
Ich verstehe, dass execSync
gibt die Ausgabe des Befehls und, dass ich drucken konnte, dass die Konsole nach der Ausführung, aber auf diese Weise habe ich nicht "live" Ausgabe...
InformationsquelleAutor der Frage suamikim | 2015-05-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben Sie den Eltern stdio der Kind-Prozesswenn es das ist, was Sie wollen:
InformationsquelleAutor der Antwort gregers
Es sei denn, Sie umleiten von stdout und stderr wie die akzeptierte Antwort legt nahe, dies ist nicht möglich, mit execSync oder spawnSync. Ohne Umleitung von stdout und stderr diese Befehle nur zurück, stdout und stderr wenn der Befehl abgeschlossen ist.
Dies zu tun, ohne das umleiten von stdout und stderr, sind Sie gehen zu müssen, spawn, dies zu tun, aber es ist ziemlich straight-forward:
Habe ich ein ls-Befehl, der rekursiv Listen-Dateien, so dass Sie es testen kann, schnell. Spawn nimmt als erstes argument den Namen der ausführbaren Datei, die Sie versuchen zu laufen und als zweites argument nimmt ein array von Zeichenfolgen, jeder parameter, den Sie übergeben möchten, dass die ausführbare Datei.
Allerdings, wenn Sie setzen auf mit execSync und können nicht umleiten von stdout oder stderr aus irgendeinem Grund, öffnen Sie ein terminal wie xterm und gib es einen Befehl, zum Beispiel so:
Wird diese ermöglichen es Ihnen, um zu sehen, was Ihr Befehl wird dabei in dem neuen terminal aber immer noch die synchronen Aufruf.
InformationsquelleAutor der Antwort Brian
Können Sie einfach
.toString()
.Dies wurde getestet auf Knoten
v8.5.0
ich bin mir nicht sicher über die früheren Versionen. Nach @etovaber es funktioniert nicht aufv6.3.1
- ich bin mir nicht sicher über die in-zwischen.InformationsquelleAutor der Antwort Ethan