Latest web development tutorials

نود.جي إس عملية متعددة

ونحن نعلم جميعا أن نود.جي إس هي طريقة واحدة مترابطة، ولكن يتم استخدامه لمعالجة المتزامنة الحدث يحركها، والتي سوف تساعدنا على إنشاء عدة عمليات فرعية في نظام وحدة المعالجة المركزية متعددة النوى، مما يحسن من الأداء.

كل طفل هو دائما مع ثلاثة أشياء تدفق: child.stdin، child.stdout وchild.stderr. قد أنهما يشتركان في عملية الأصل تيار stdio، أو أنها يمكن أيضا أن قاد جوه تيار المستقلين.

توفر عقدة وحدات child_process لخلق عملية طفل، عن طريق:

  • وعادchild_process.exec عملية طفل استخدام تشغيل المخزن المؤقت للإخراج عملية طفل، والناتج من عملية طفل في شكل المعلمات وظيفة رد - إكسيك.

  • تفرخ - child_process.spawn باستخدام معلمات سطر الأوامر المحدد لإنشاء عملية جديدة.

  • وتفرخchild_process.fork () شكل خاص لوحدة تعمل في الطفل، مثل شوكة ( './ son.js') يتوافق مع تفرخ ( 'العقدة'، [ '- شوكة./son.js " ]). والفرق هو في طريقة تفرخ، مفترق بين عملية الوالدين والطفل، وإنشاء قناة اتصال للاتصال بين العمليات.


إكسيك) طريقة (

عملية طفل استخدام تشغيل child_process.exec، يتم إرجاع المخزن المؤقت للإخراج عملية طفل، والناتج من عملية طفل في شكل المعلمات وظيفة رد.

بناء الجملة كما يلي:

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

المعلمات

المعلمات على النحو التالي:

الأوامر: سلسلة الأمر لتشغيل والمعلمات مفصولة بمسافات

خيارات: التحف يمكن أن يكون:

  • الحالي كود] دليل العمل، سلسلة، عملية طفل
  • الحياة الفطرية، والهدف من المتغيرات البيئية الرئيسية
  • ترميز، سلسلة، ترميز الأحرف (الافتراضي: "UTF8 ')
  • قذيفة، سلسلة، لتنفيذ الأمر Shell (الافتراضي: على UNIX هو /bin/sh ، كما هو الحال في ويندوز cmd.exe ، ينبغي أن تكون قادرة على شل تحديد -c التبديل في يونيكس، أو /s /c في ويندوز. في نظام التشغيل Windows، خط إعراب القيادة تكون متوافقة cmd.exe )
  • مهلة الرقمية، المهلة (الافتراضي: 0)
  • maxBuffer، الرقمية، يسمح للأقصى عازلة في المعياري أو ستدير في الوجود (ثنائي)، لذلك إذا كان سيتم قتل طفل بعده (الافتراضي: 200 * 1024)
  • killSignal، نهاية سلسلة إشارة (الافتراضي: "SIGTERM ')
  • رمز المستخدم والرقمية، تعيين هوية المستخدم من عملية
  • دائرة المخابرات العامة، الرقمية، تعيين مجموعة عملية معرف

رد: وظيفة رد على ثلاث حجج الخطأ، المعياري وستدير.

إكسيك () الأسلوب بإرجاع أقصى العازلة، والانتظار لنهاية هذه العملية، لمرة واحدة إرجاع محتويات المخزن المؤقت.

أمثلة

دعونا إنشاء اثنين من شبيبة الملفات support.js وmaster.js.

كود ملف support.js:

console.log("进程 " + process.argv[2] + " 执行。" );

كود ملف master.js:

const fs = require('fs');
const child_process = require('child_process');

for(var i=0; i<3; i++) {
   var workerProcess = child_process.exec('node support.js '+i,
      function (error, stdout, stderr) {
         if (error) {
            console.log(error.stack);
            console.log('Error code: '+error.code);
            console.log('Signal received: '+error.signal);
         }
         console.log('stdout: ' + stdout);
         console.log('stderr: ' + stderr);
      });

      workerProcess.on('exit', function (code) {
      console.log('子进程已退出,退出码 '+code);
   });
}

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

$ node master.js 
子进程已退出,退出码 0
stdout: 进程 1 执行。

stderr: 
子进程已退出,退出码 0
stdout: 进程 0 执行。

stderr: 
子进程已退出,退出码 0
stdout: 进程 2 执行。

stderr: 

تفرخ) طريقة (

child_process.spawn باستخدام معلمات سطر الأوامر المحدد لإنشاء عملية جديدة، بناء الجملة كما يلي:

child_process.spawn(command[, args][, options])

المعلمات

المعلمات على النحو التالي:

الأوامر: الأمر لتشغيل

وسائط: صفيف معلمة سلسلة مجموعة

كائن الخيارات

  • [كود] سلسلة دليل العمل الحالي لعملية طفل
  • الحياة الفطرية كائن البيئة أزواج قيمة المفتاح-متغيرة
  • صفيف stdio | فرعي أو جانبي سلسلة التكوين stdio
  • منطقية منفصلة سيصبح هذا الطفل زعيم مجموعة عملية
  • عدد المرن لتعيين هوية المستخدم من عملية
  • دائرة المخابرات العامة عدد وضع مجموعة عملية معرف

طريقة تفرخ () إرجاع تيار (المعياري وستدير)، وتستخدم في عملية للعودة كميات كبيرة من البيانات. مرة واحدة بدأت العملية عندما بدأت تفرخ () للحصول على رد.

أمثلة

دعونا إنشاء اثنين من شبيبة الملفات support.js وmaster.js.

كود ملف support.js:

console.log("进程 " + process.argv[2] + " 执行。" );

كود ملف master.js:

const fs = require('fs');
const child_process = require('child_process');
 
for(var i=0; i<3; i++) {
   var workerProcess = child_process.spawn('node', ['support.js', i]);

   workerProcess.stdout.on('data', function (data) {
      console.log('stdout: ' + data);
   });

   workerProcess.stderr.on('data', function (data) {
      console.log('stderr: ' + data);
   });

   workerProcess.on('close', function (code) {
      console.log('子进程已退出,退出码 '+code);
   });
}

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

$ node master.js stdout: 进程 0 执行。

子进程已退出,退出码 0
stdout: 进程 1 执行。

子进程已退出,退出码 0
stdout: 进程 2 执行。

子进程已退出,退出码 0

طريقة شوكة

child_process.fork هو شكل خاص من أشكال تفرخ () طريقة لخلق العمليات وبناء الجملة كما يلي:

child_process.fork(modulePath[, args][, options])

المعلمات

المعلمات على النحو التالي:

modulePath: سلسلة، ليتم تشغيلها في وحدة نمطية عملية طفل

وسائط: صفيف معلمة سلسلة مجموعة

خيارات: كائن

  • [كود] سلسلة دليل العمل الحالي لعملية طفل
  • الحياة الفطرية كائن البيئة أزواج قيمة المفتاح-متغيرة
  • execPath سلسلة إنشاء عملية تابعة للملف قابل للتنفيذ
  • الملف القابل للتنفيذ المعلمة سلسلة مجموعة execArgv صفيف الطفل (الافتراضي: process.execArgv)
  • إذا منطقية صامتا true ، الطفل stdin ، stdout و stderr سيتم ربط عملية الأصل، وإلا، سوف تكون موروثة من عملية الأصل. (الافتراضي: false )
  • عدد المرن لتعيين هوية المستخدم من عملية
  • دائرة المخابرات العامة عدد وضع مجموعة عملية معرف

الكائن عاد بالإضافة إلى كل الأساليب لديها سبيل المثال ChildProcess، هناك قناة اتصال المضمنة.

H3> أمثلة

دعونا إنشاء اثنين من شبيبة الملفات support.js وmaster.js.

كود ملف support.js:

console.log("进程 " + process.argv[2] + " 执行。" );

كود ملف master.js:

const fs = require('fs');
const child_process = require('child_process');
 
for(var i=0; i<3; i++) {
   var worker_process = child_process.fork("support.js", [i]);	

   worker_process.on('close', function (code) {
      console.log('子进程已退出,退出码 ' + code);
   });
}

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

$ node master.js 
进程 0 执行。
子进程已退出,退出码 0
进程 1 执行。
子进程已退出,退出码 0
进程 2 执行。
子进程已退出,退出码 0