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

الاتصال بين العمليات

هناك استخدامات متعددة Pipe في الحوسبة. واحد منهم هو تفعيل الاتصال بين العمليات. تستخدم أجهزة الكمبيوتر الحديثة شيئًا يسمى الذاكرة الافتراضية. بدلاً من السماح لكل عملية برؤية عناوين الذاكرة الأصلية، يمنح الكمبيوتر كل عملية نظام عنوان الذاكرة الظاهرية الخاص بها.

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

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

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

نصيحة: إذا كنت بحاجة إلى عمليتي اتصال ليسا أحد الوالدين والطفل، يمكنك استخدام وظيفة مماثلة، FIFO.

Pipe في سطر الأوامر

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

في Linux، أمر طباعة محتويات الملف إلى Terminal هو “cat.” للفرز، يمكنك استخدام الأمر “فرز”. لحذف التكرارات، يمكنك استخدام “uniq”. إذا كنت تريد تشغيلها كأمر من سطر واحد، فأنت بحاجة إلى توجيه إخراج أمر واحد إلى التالي. يتم ذلك، بشكل ملائم، باستخدام رمز Pipe “|”. يختلف رمز Pipe عن الحرف الكبير “i” والأحرف الصغيرة “L” والرقم واحد، على الرغم من أنهما قد يتشابهان في بعض الخطوط. للمساعدة في الحفاظ على تميزه، غالبًا ما يتم عرضه على لوحة المفاتيح أو في الخطوط مع وجود فجوة صغيرة في المنتصف، على الرغم من أنه يمكن أيضًا أن يكون خطًا رأسيًا واحدًا متصلًا.

لاستخدام رمز Pipe، يمكنك وضعه بين أمرين. يأخذ إخراج الأمر الأول ويوفره كمدخل للأمر الثاني. لطباعة ملف وفرز المحتويات وحذف التكرارات، يمكنك تشغيل الأمر: “cat | sort | uniq. ” نظرًا لأن Pipe يعترض الإخراج تمامًا، فإن هذا لا يطبع الإخراج في الخطوات الوسيطة. النتيجة الوحيدة هي الإخراج من uniq.

الخلاصة

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