क्या node.js के भीतर से एक बाहरी प्रोग्राम निष्पादित करना संभव है? क्या पाइथन के os.system()
या किसी भी लाइब्रेरी के बराबर है जो इस कार्यक्षमता को जोड़ता है?Node.js के भीतर से एक बाहरी प्रोग्राम निष्पादित करने के लिए कैसे?
उत्तर
आप child_process
मॉड्यूल का उपयोग करना चाहते हैं। the documentation देखें, जो विभिन्न उपयोग मामलों के कई स्पष्ट उदाहरण प्रदान करता है।
Node.js प्रलेखन से:
नोड एक त्रि-दिशात्मक popen (3) ChildProcess वर्ग के माध्यम से सुविधा प्रदान करता है।
देखें http://nodejs.org/docs/v0.4.6/api/child_processes.html
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
// result
});
बाल प्रक्रिया के परिणामस्वरूप कार्य करने का सबसे अच्छा तरीका क्या है। उदाहरण ... यदि प्रक्रिया एक निकास कोड 0 लौटाती है, और मैं एक अलग विधि को कॉल करना चाहता हूं, तो मुझे त्रुटियों की काफी मात्रा में भागना प्रतीत होता है। – continuousqa
@continuousqa - यह उत्तर 4 साल पुराना है। यदि आपको समस्याएं हैं, तो कृपया SO पर एक नया प्रश्न पोस्ट करें और यदि आवश्यक हो तो इसे संदर्भित करें। –
यह [आलेख] (https://medium.com/@graeme_boy/how-to-optimize-cpu-intensive-work-in-node-js-cdc09099ed41#.se7f974h7) 'child_process' का उपयोग करने पर अच्छी युक्तियां हैं। –
कार्यकारी 512K के बफर आकार की स्मृति सीमित है। इस मामले में स्पॉन का उपयोग करना बेहतर है। अंडे एक साथ रन टाइम पर निष्पादित आदेश के stdout की पहुंच है
var spawn = require('child_process').spawn;
var prc = spawn('java', ['-jar', '-Xmx512M', '-Dfile.encoding=utf8', 'script/importlistings.jar']);
//noinspection JSUnresolvedFunction
prc.stdout.setEncoding('utf8');
prc.stdout.on('data', function (data) {
var str = data.toString()
var lines = str.split(/(\r?\n)/g);
console.log(lines.join(""));
});
prc.on('close', function (code) {
console.log('process exit code ' + code);
});
मैंने यह कोड लिया है और यह स्पॉन्ड प्रक्रिया के आउटपुट को दिखाने में विफल रहता है http://stackoverflow.com/questions/21302350/node-js-cant-get-output-of-spawned- प्रक्रिया –
@PaulVerest: आपका आउटपुट 'stdout' की बजाय' stderr' में हो सकता है। मेरे मामले में हालांकि 'करीबी' कभी नहीं आ रहा है ... – hippietrail
सबसे आसान तरीका है:
const exec = require("child_process").exec
exec('yourApp').unref()
unref "yourApp" का इंतजार किए बिना अपनी प्रक्रिया को समाप्त करने के लिए आवश्यक है
यहां निष्पादन docs
मुझे लगता है कि यह केवल स्पॉन के लिए काम करता है – googamanga
आपको शायद नमूना कोड को उत्तर के साथ उत्तर देना चाहिए किसी को दस्तावेज़ पढ़ने के लिए कह रहा है। – jww