허용 된 답변이 제안하는대로 stdout 및 stderr을 리디렉션하지 않으면 execSync 또는 spawnSync로는 불가능합니다. stdout 및 stderr을 경로 재지 정하지 않으면 해당 명령은 명령이 완료 될 때만 stdout 및 stderr을 리턴합니다.
stdout 및 stderr을 리디렉션하지 않고이 작업을 수행하려면 스폰을 사용 하여이 작업을 수행해야하지만 매우 간단합니다.
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 /");
그러면 새 터미널에서 명령이 수행하는 작업을 볼 수 있지만 여전히 동기식 호출이 가능합니다.