Kecuali Anda mengarahkan ulang stdout dan stderr seperti jawaban yang diterima menyarankan, ini tidak mungkin dengan execSync atau spawnSync. Tanpa mengarahkan stdout dan stderr, perintah-perintah itu hanya mengembalikan stdout dan stderr ketika perintah selesai.
Untuk melakukan ini tanpa mengarahkan ulang stdout dan stderr, Anda harus menggunakan spawn untuk melakukan ini, tetapi ini cukup mudah:
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);
});
Saya menggunakan perintah ls yang secara rekursif mendaftar file sehingga Anda dapat mengujinya dengan cepat. Spawn mengambil sebagai argumen pertama nama yang dapat dieksekusi yang Anda coba jalankan dan karena argumen kedua dibutuhkan array string yang mewakili setiap parameter yang ingin Anda sampaikan ke executable itu.
Namun, jika Anda menggunakan execSync dan tidak dapat mengalihkan stdout atau stderr karena suatu alasan, Anda dapat membuka terminal lain seperti xterm dan memberikannya perintah seperti ini:
var execSync = require('child_process').execSync;
execSync("xterm -title RecursiveFileListing -e ls -latkR /");
Ini akan memungkinkan Anda untuk melihat apa perintah Anda lakukan di terminal baru tetapi masih memiliki panggilan sinkron.