खोज…


वाक्य - विन्यास

  • child_process.exec (कमांड [, विकल्प] [, कॉलबैक])
  • child_process.execFile (फ़ाइल [, args] [, विकल्प] [, कॉलबैक])
  • child_process.fork (मॉड्यूलपाथ [, args] [, विकल्प])
  • child_process.spawn (कमांड [, args] [, विकल्प])
  • child_process.execFileSync (फ़ाइल [, args] [, विकल्प])
  • child_process.execSync (कमांड [, विकल्प])
  • child_process.spawnSync (कमांड [, args] [, विकल्प])

टिप्पणियों

बाल प्रक्रियाओं के साथ काम करते समय, सभी अतुल्यकालिक तरीकों से ChildProcess की एक आवृत्ति वापस आ ChildProcess , जबकि सभी सिंक्रोनस संस्करण जो कुछ भी चलाया गया था उसका आउटपुट वापस कर देगा। Node.js में अन्य सिंक्रोनस ऑपरेशन्स की तरह, यदि कोई त्रुटि होती है, तो वह फेंक देगा

एक कमांड निष्पादित करने के लिए एक नई प्रक्रिया का प्रकाशन

एक नई प्रक्रिया को शुरू करने के लिए जिसमें आपको अनबफर्ड आउटपुट की आवश्यकता होती है (जैसे लंबे समय तक चलने वाली प्रक्रियाएं जो प्रिंट करने और तुरंत बाहर निकलने के बजाय समय-समय पर आउटपुट प्रिंट कर सकती हैं), child_process.spawn() उपयोग करें।

यह विधि किसी दिए गए आदेश और तर्कों की एक सरणी का उपयोग करके एक नई प्रक्रिया को जन्म देती है। वापसी मान का एक उदाहरण है ChildProcess , जो बारी में प्रदान करता है stdout और stderr गुण। उन धाराओं के दोनों के उदाहरण हैं stream.Readable

निम्न कोड कमांड ls -lh /usr का उपयोग करने के बराबर है।

const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

एक और उदाहरण कमांड:

zip -0vr "archive" ./image.png

के रूप में लिखा जा सकता है:

spawn('zip', ['-0vr', '"archive"', './image.png']);

कमांड निष्पादित करने के लिए शेल खोलना

शेल में एक कमांड चलाने के लिए, जिसमें आपको बफ़र्ड आउटपुट की आवश्यकता होती है (यानी यह स्ट्रीम नहीं है), child_process.exec उपयोग child_process.exec । उदाहरण के लिए, यदि आप कमांड cat *.js file | wc -l चलाना चाहते हैं cat *.js file | wc -l , बिना किसी विकल्प के, जो इस तरह दिखेगा:

const exec = require('child_process').exec;
exec('cat *.js file | wc -l', (err, stdout, stderr) => {
  if (err) {
    console.error(`exec error: ${err}`);
    return;
  }

  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

फ़ंक्शन तीन मापदंडों तक स्वीकार करता है:

child_process.exec(command[, options][, callback]);

कमांड पैरामीटर एक स्ट्रिंग है, और इसकी आवश्यकता है, जबकि विकल्प ऑब्जेक्ट और कॉलबैक दोनों वैकल्पिक हैं। यदि कोई विकल्प ऑब्जेक्ट निर्दिष्ट नहीं है, तो exec डिफ़ॉल्ट के रूप में निम्नलिखित का उपयोग करेगा:

{
  encoding: 'utf8',
  timeout: 0,
  maxBuffer: 200*1024,
  killSignal: 'SIGTERM',
  cwd: null,
  env: null
}

विकल्प ऑब्जेक्ट shell पैरामीटर का भी समर्थन करता है, जो कि विंडोज पर UNIX और cmd.exe पर डिफ़ॉल्ट /bin/sh द्वारा होता है, प्रक्रिया की उपयोगकर्ता पहचान सेट करने के लिए एक uid विकल्प और समूह पहचान के लिए एक gid विकल्प है।

कॉलबैक, जिसे कमांड निष्पादित करते समय कहा जाता है, को तीन तर्कों (err, stdout, stderr) साथ बुलाया जाता है। आदेश को सफलतापूर्वक कार्यान्वित करते हैं, तो err हो जाएगा null , अन्यथा यह का एक उदाहरण हो जाएगा Error के साथ, err.code प्रक्रिया के निकास कोड जा रहा है और err.signal संकेत है कि यह समाप्त करने के लिए भेजा गया था जा रहा है।

stdout और stderr तर्क कमांड का आउटपुट हैं। इसे विकल्प ऑब्जेक्ट (डिफ़ॉल्ट: string ) में निर्दिष्ट एन्कोडिंग के साथ डिकोड किया गया है, लेकिन अन्यथा Buffer ऑब्जेक्ट के रूप में वापस किया जा सकता है।

वहाँ भी exec का एक तुल्यकालिक संस्करण मौजूद है, जो execSync । तुल्यकालिक संस्करण एक कॉलबैक नहीं ले करता है, और वापस आ जाएगी stdout बजाय का एक उदाहरण के ChildProcess । यदि तुल्यकालिक संस्करण एक त्रुटि का सामना करता है, तो यह आपके प्रोग्राम को फेंक देगा और रोक देगा । यह इस तरह दिख रहा है:

const execSync = require('child_process').execSync;
const stdout = execSync('cat *.js file | wc -l');
console.log(`stdout: ${stdout}`);

एक निष्पादन योग्य चलाने के लिए एक प्रक्रिया पैदा करना

यदि आप किसी फ़ाइल को चलाना चाहते हैं, जैसे कि निष्पादन योग्य, तो child_process.execFile उपयोग child_process.execFilechild_process.exec तरह एक खोल को पैदा करने के बजाय, यह सीधे एक नई प्रक्रिया बनाएगा, जो कमांड चलाने से थोड़ा अधिक कुशल है। फ़ंक्शन का उपयोग इस तरह किया जा सकता है:

const execFile = require('child_process').execFile;
const child = execFile('node', ['--version'], (err, stdout, stderr) => {
  if (err) {
    throw err;
  }

  console.log(stdout);
});

child_process.exec विपरीत, यह फ़ंक्शन चार मापदंडों तक स्वीकार करेगा, जहां दूसरा पैरामीटर उन तर्कों की एक सरणी है जिन्हें आप निष्पादन योग्य को आपूर्ति करना चाहते हैं:

child_process.execFile(file[, args][, options][, callback]);

अन्यथा, विकल्प और कॉलबैक प्रारूप child_process.exec समान हैं। वही फ़ंक्शन के सिंक्रोनस संस्करण के लिए जाता है:

const execFileSync = require('child_process').execFileSync;
const stdout = execFileSync('node', ['--version']);
console.log(stdout);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow