जब तक आप स्ट्रेडआउट और स्ट्रेडर को स्वीकार नहीं किया जाता जब तक कि स्वीकृत उत्तर नहीं मिल जाता है, तब तक यह निष्पादन या स्पॉन्ससंक के साथ संभव नहीं है। 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 कमांड का उपयोग किया जो फ़ाइलों की पुनरावर्ती सूची देता है ताकि आप इसे जल्दी से जांच सकें। स्पॉन पहले तर्क के रूप में लेता है निष्पादन योग्य नाम जिसे आप चलाने की कोशिश कर रहे हैं और जैसा कि यह दूसरा तर्क है यह उस पैरामीटर का प्रतिनिधित्व करने वाले प्रत्येक पैरामीटर का एक सरणी लेता है जिसे आप उस निष्पादन योग्य में पास करना चाहते हैं।
हालाँकि, यदि आप निष्कासन का उपयोग कर रहे हैं और किसी कारण से stdout या stderr को रीडायरेक्ट नहीं कर सकते हैं, तो आप xterm की तरह एक और टर्मिनल खोल सकते हैं और इसे एक कमांड दे सकते हैं जैसे:
var execSync = require('child_process').execSync;
execSync("xterm -title RecursiveFileListing -e ls -latkR /");
यह आपको यह देखने की अनुमति देगा कि नए टर्मिनल में आपकी कमांड क्या कर रही है, लेकिन अभी भी सिंक्रोनस कॉल है।