À moins que vous ne redirigiez stdout et stderr comme le suggère la réponse acceptée, cela n'est pas possible avec execSync ou spawnSync. Sans rediriger stdout et stderr, ces commandes ne renvoient stdout et stderr que lorsque la commande est terminée.
Pour ce faire sans rediriger stdout et stderr, vous devrez utiliser spawn pour le faire, mais c'est assez simple:
var spawn = require('child_process').spawn;
//kick off process of listing files
var child = spawn('ls', ['-l', '/']);
//spit stdout to screen
child.stdout.on('data', function (data) { process.stdout.write(data.toString()); });
//spit stderr to screen
child.stderr.on('data', function (data) { process.stdout.write(data.toString()); });
child.on('close', function (code) {
console.log("Finished with code " + code);
});
J'ai utilisé une commande ls qui répertorie les fichiers de manière récursive afin que vous puissiez le tester rapidement. Spawn prend comme premier argument le nom de l'exécutable que vous essayez d'exécuter et comme deuxième argument, il prend un tableau de chaînes représentant chaque paramètre que vous voulez passer à cet exécutable.
Cependant, si vous êtes configuré pour utiliser execSync et que vous ne pouvez pas rediriger stdout ou stderr pour une raison quelconque, vous pouvez ouvrir un autre terminal comme xterm et lui passer une commande comme ceci:
var execSync = require('child_process').execSync;
execSync("xterm -title RecursiveFileListing -e ls -latkR /");
Cela vous permettra de voir ce que fait votre commande dans le nouveau terminal tout en conservant l'appel synchrone.