A menos que redirija stdout y stderr como sugiere la respuesta aceptada, esto no es posible con execSync o spawnSync. Sin redireccionar stdout y stderr, esos comandos solo devuelven stdout y stderr cuando se completa el comando.
Para hacer esto sin redirigir stdout y stderr, necesitará usar spawn para hacer esto, pero es bastante sencillo:
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);
});
Utilicé un comando ls que enumera archivos de forma recursiva para que pueda probarlo rápidamente. Spawn toma como primer argumento el nombre del ejecutable que está intentando ejecutar y, como segundo argumento, toma una matriz de cadenas que representan cada parámetro que desea pasar a ese ejecutable.
Sin embargo, si está configurado para usar execSync y no puede redirigir stdout o stderr por alguna razón, puede abrir otro terminal como xterm y pasarle un comando como este:
var execSync = require('child_process').execSync;
execSync("xterm -title RecursiveFileListing -e ls -latkR /");
Esto le permitirá ver qué está haciendo su comando en la nueva terminal, pero aún tendrá la llamada síncrona.