Node.js के भीतर से किसी बाहरी प्रोग्राम को कैसे निष्पादित करें?


137

क्या नोड.जेएस के भीतर से किसी बाहरी कार्यक्रम को निष्पादित करना संभव है? क्या पायथन os.system()या किसी लाइब्रेरी के बराबर है जो इस कार्यक्षमता को जोड़ता है?


आप child_processमॉड्यूल का उपयोग करना चाहते हैं । प्रलेखन देखें , जो विभिन्न उपयोग के मामलों के कई स्पष्ट उदाहरण प्रदान करता है।
केन रॉकॉट

जवाबों:


140
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
    // result
});

2
बच्चे की प्रक्रिया के परिणामस्वरूप कार्य करने का सबसे अच्छा तरीका क्या है। उदाहरण ... यदि प्रक्रिया एक एक्जिट कोड 0 लौटाती है, और मैं एक अलग विधि को कॉल करना चाहता हूं, तो मुझे त्रुटियों की अधिकता है।
निरंतर

@ कॉन्टिनसुफ्का - यह जवाब 4 साल पुराना है। यदि आपके पास समस्याएँ हैं, तो कृपया SO पर एक नया प्रश्न पोस्ट करें और यदि आवश्यक हो तो इसे संदर्भित करें।
मार्क कहन

1
इस लेख में उपयोग करने के लिए अच्छे सुझाव दिए गए हैं child_process
एड्रियानो पी

@ JoãoPimentelFerreira - यह सवाल 7 साल पुराना है। मेरा सुझाव है कि अगर आपको मदद की ज़रूरत है तो एक नया उद्घाटन करें
मार्क कहन

75

निष्पादन में 512k के बफर आकार की मेमोरी सीमा है। इस मामले में स्पॉन का उपयोग करना बेहतर है। स्पॉन के साथ एक रन टाइम में निष्पादित कमांड के स्टडआउट तक पहुंच होती है

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);
});

1
मैंने यह कोड लिया है और यह spawned प्रक्रिया stackoverflow.com/questions/21302350/…
पॉल वेरेस्ट

1
@PaVVestest: आपका आउटपुट इसके stderrबजाय हो सकता है stdout। मेरे मामले में हालांकि closeकभी नहीं आ रहा है ...
hippietrail

1
स्टडिन के बारे में क्या? क्या प्रक्रिया में डेटा भेजना संभव है?
हर्नान एचे

18

सबसे सरल तरीका है:

const {exec} = require("child_process")
exec('yourApp').unref()

unref "yourApp" का इंतजार किए बिना अपनी प्रक्रिया को समाप्त करने के लिए आवश्यक है

यहाँ निष्पादन डॉक्स हैं


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.