الانتقال إلى المحتوى الرئيسي

العمليات التي يمكن تبادل المعلومات عبر الأنابيب: دليل مفصل

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

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

عند العمل مع الأنابيب ، من المهم أن تأخذ في الاعتبار جانبيها. يسمح لك بنقل البيانات في كلا الاتجاهين-من العملية الأم إلى الطفل والعكس صحيح. بالإضافة إلى ذلك ، يتم إرسال البيانات كتيار ، مما يعني أنه من الممكن قراءة البيانات وكتابتها باستمرار بين العمليات.

  1. تعريف واستخدام
  2. الأنابيب في لينكس
  3. الأنابيب في النوافذ
  4. كيف تعمل الأنابيب?
  5. أمثلة الاستخدام

التعريف والاستخدام

الأنابيب هي آليات تسمح بتبادل المعلومات بين العمليات في نظام التشغيل. إنها تدفقات بيانات أحادية الاتجاه يتم من خلالها نقل المعلومات.

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

يتم استخدام وظيفة الأنبوب () لإنشاء قناة غير مسماة. يقوم بإرجاع اثنين من واصفات الملفات-واحد للكتابة إلى القناة (نهاية الكتابة) ، والآخر للقراءة من القناة (نهاية القراءة). يمكن للعملية كتابة البيانات إلى واصف ملف الكتابة ، ويمكن لعملية أخرى قراءة هذه البيانات من واصف ملف القراءة.

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

واصف ملف السجل
ستدوت ستدين قراءة ملف واصف

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

الأنابيب على لينكس

الأنابيب في لينكس هو آلية الاتصال بين العمليات التي تسمح لك لنقل البيانات بين العمليات في اتجاه واحد. إنها واحدة من أكثر الطرق استخداما لتبادل المعلومات بين العمليات في نظام التشغيل لينكس.

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

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

على لينكس ، يتم إنشاء أنبوب باستخدام استدعاء نظام الأنابيب (). يقوم استدعاء النظام بإنشاء واصفات الملفات ، أحدها مخصص للقراءة (نهاية القراءة) والآخر للكتابة (نهاية الكتابة).

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

الأنابيب لديه الميزات التالية:

  1. يتم إرسال البيانات بالتتابع ويمكن قراءتها بنفس الترتيب الذي كتبت به.
  2. الحد الأقصى لحجم البيانات المرسلة عبر الأنابيب محدود من خلال إعداد نظام الأنابيب.
  3. عند الكتابة إلى أنبوب فارغ أو مملوء بالكامل ، يتم حظر عملية كتابة البيانات حتى تقرأ عملية أخرى البيانات أو تحرر مساحة في الأنبوب.
  4. عندما يتم إغلاق جميع واصفات ملف أنبوب الكتابة ، تتلقى عملية القراءة إوف ، مما يعني نهاية نقل البيانات.

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

. الأنابيب في النوافذ

في نظام التشغيل ويندوز ، فمن الممكن أيضا استخدام آلية الأنابيب لتبادل البيانات بين العمليات. ومع ذلك ، فإنه يحتوي على بعض الاختلافات من الأنابيب في أنظمة مثل يونكس.

في ويندوز ، يتم تنفيذ إنشاء الأنابيب باستخدام وظيفة كريتيبيب. يستغرق معلمتين: مؤشر إلى المتغير الذي سيتم كتابة مقبض القراءة من الأنبوب ، ومؤشر إلى المتغير الذي سيتم كتابة مقبض الكتابة إلى الأنبوب. إذا تم إنشاء الأنبوب بنجاح ، فستحتوي هذه المتغيرات على الواصفات الضرورية.

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

بالإضافة إلى ذلك ، من الممكن استخدام الأنابيب المسماة في النوافذ. في هذه الحالة ، بدلا من استخدام وظيفة كريتيبيب ، يتم استخدام وظيفة كريتيناميدبيب لإنشاء أنبوب ، والذي يأخذ معلمة إضافية – اسم الأنابيب. يمكن استخدام هذه الأنابيب المسماة لتبادل البيانات بين العمليات المختلفة ، بما في ذلك في جلسات المستخدم المختلفة.

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

كما هو الحال في أنظمة مثل يونكس ، الأنابيب في ويندوز هي واحدة من آليات مريحة وفعالة لتبادل البيانات بين العمليات. يسمح لك بنقل البيانات دون استخدام نظام ملفات ويمكن استخدامه في مهام مختلفة ، بما في ذلك التنفيذ المتوازي للمهام والتواصل بينها.

كيف تعمل الأنابيب?

في أنظمة التشغيل يونكس ولينكس ، وكذلك في ويندوز ، يمكن إجراء الاتصالات بين العمليات باستخدام قنوات إنتيربروسيس (الأنابيب).

ما هو الأنابيب?

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

كيف تعمل الأنابيب?

الأنابيب هو واصف ملف مع اثنين من فتحات ملف مفتوحة - واحدة للقراءة واحدة للكتابة. عندما تقوم عملية بإنشاء أنبوب ، يقوم نظام التشغيل تلقائيا بإنشاء واصف ملف متصلين ببعضهما البعض. يتم استخدام واصف ملف واحد لكتابة البيانات إلى القناة ، والثاني يستخدم لقراءة البيانات من القناة.

يجب ربط العمليات التي ترغب في تبادل المعلومات عبر الأنابيب بواسطة واصف ملف متطابق. يتم ذلك عادة عن طريق إنشاء أنبوب قبل الاتصال شوكة () ، مكالمة نظام تنشئ عملية جديدة.

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

مزايا وقيود استخدام الأنابيب:

  • المزايا:
  • القيود:

خاتمة:

الأنابيب هي آلية مريحة وفعالة لتبادل البيانات بين العمليات في أنظمة التشغيل. يوفر نقل البيانات في اتجاه واحد بين العمليات ذات الصلة. الأنابيب هي وسيلة اتصال أسهل في الاستخدام وأكثر كفاءة من آليات نقل البيانات الأخرى مثل المقابس.

أمثلة الاستخدام

لتوضيح كيف يمكن للعمليات تبادل المعلومات من خلال الأنابيب ، دعونا نلقي نظرة على بعض الأمثلة:

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

مثال على الكود:

كثافة العمليات الرئيسية () {

إنت فد[2];

بيد_ت بيد;

// إنشاء أنبوب

إذا (الأنابيب (فد) = = -1) {

خطأ ("خطأ في إنشاء الأنابيب");

خروج (خروج _ فشل);

}

// إنشاء عملية الطفل

بيد = شوكة();

إذا (بيد < 0) {

خطأ ("خطأ في إنشاء عملية الطفل");

خروج (خروج _ فشل);

}

إذا (بيد > 0) {

// رمز العملية الأم

رسالة شار [] = "مرحبا يا ابنة!";

إغلاق (فد [0]); // إغلاق نهاية الأنبوب للقراءة

// كتابة البيانات إلى الأنابيب

الكتابة(فد[1] ، الكتابة ، سترلين (الكتابة)+1);

إغلاق (فد[1]) ؛ / / إغلاق نهاية الأنبوب للكتابة

} آخر {

// رمز عملية الطفل

إغلاق (فد[1]) ؛ / / إغلاق نهاية الأنبوب للكتابة

شار إعادة الرسالة [100];

// قراءة البيانات من الأنابيب

قراءة (فد [0] ، إعادة الرسالة ، حجم (إعادة الرسالة));

برينتف ("الرسالة المستلمة: ٪ ق

"،إعادة الرسالة);

إغلاق (فد [0]) ؛ / / إغلاق نهاية الأنبوب للقراءة

}

العودة 0;

}

  • نقل البيانات في دائرة: في هذا المثال ، سيتم إنشاء ثلاث عمليات: أ ، ب ، ج. ستكتب العملية أ البيانات إلى الأنبوب وتمريرها إلى العملية ب. ستقرأ العملية ب البيانات من الأنبوب وتمريرها إلى العملية ج. ستقرأ عملية ج البيانات من الأنبوب وتعرضها على الشاشة.

مثال على الكود:

كثافة العمليات الرئيسية () {

إنت فد 1 [2];

إنت فد 2 [2];

بيد_ت بيد 1 ، بيد 2;

// إنشاء أنبوبين

إذا (الأنابيب (فد 1) = = -1