Якщо ви не перенаправляєте stdout та stderr, як підказує прийнята відповідь, це неможливо з execSync або spawnSync. Без перенаправлення stdout та stderr ці команди повертають stdout та stderr лише тоді, коли команда виконана.
Для цього без перенаправлення stdout та stderr вам знадобиться використовувати spawn, але це досить прямо вперед:
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);
});
Я використовував команду ls, яка рекурсивно перераховує файли, щоб ви могли швидко її протестувати. Spawn бере в якості першого аргументу ім'я виконавчого файлу, яке ви намагаєтеся запустити, і як другий аргумент, він бере масив рядків, що представляють кожен параметр, який ви хочете передати цьому виконуваному файлу.
Однак якщо ви налаштовані на використання execSync і не можете чомусь перенаправити stdout або stderr, ви можете відкрити інший термінал, як xterm, і передати йому таку команду:
var execSync = require('child_process').execSync;
execSync("xterm -title RecursiveFileListing -e ls -latkR /");
Це дозволить вам побачити, що робить ваша команда в новому терміналі, але все ще матиме синхронний виклик.