A menos que você redirecione stdout e stderr como a resposta aceita sugere, isso não é possível com execSync ou spawnSync. Sem redirecionar stdout e stderr, esses comandos retornam apenas stdout e stderr quando o comando é concluído.
Para fazer isso sem redirecionar stdout e stderr, você precisará usar spawn para fazer isso, mas é bem direto:
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);
});
Eu usei um comando ls que lista recursivamente os arquivos para que você possa testá-lo rapidamente. Spawn usa como primeiro argumento o nome do executável que você está tentando executar e, como segundo argumento, usa uma matriz de seqüências de caracteres representando cada parâmetro que você deseja passar para esse executável.
No entanto, se você estiver usando o execSync e não puder redirecionar stdout ou stderr por algum motivo, poderá abrir outro terminal como o xterm e passar um comando da seguinte maneira:
var execSync = require('child_process').execSync;
execSync("xterm -title RecursiveFileListing -e ls -latkR /");
Isso permitirá que você veja o que seu comando está fazendo no novo terminal, mas ainda tem a chamada síncrona.