التوافه في عطلة نهاية الأسبوع: ذاكرة العملية الخاصة بك عبارة عن ملف

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

1 يونيو 2026 2 دقائق قراءة

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

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

ومع ذلك، فإن الخدعة /dev/tcp/<server>/<port> تعمل فقط مع الملفات المفتوحة بواسطة الصدفة نفسها. إذا قمت بتمرير هذا المسار إلى أي برنامج آخر، فلن تحصل على النتيجة المتوقعة:

إذا اشتكيت من هذا التناقض، فقد يتم إخبارك أنه ليس كل شيء عبارة عن ملف؛ بدلاً من ذلك، "كل شيء عبارة عن واصف ملف". أي أنك قد تحتاج إلى القيام بشيء خاص لبدء اتصال TCP/IP، ولكن بمجرد القيام بذلك، فإن معرف الاتصال الذي تم إرجاعه له دلالات تشبه الملف ويمكن تمريره إلى واجهات برمجة تطبيقات الملفات القياسية مثل read(...) و write(...) .

ولكن بعد ذلك، ليس كل شيء في الواقع عبارة عن واصف ملف! تستخدم بعض أجزاء نظام التشغيل مساحات أسماء وواجهات برمجة تطبيقات منفصلة؛ ومن الأمثلة الجيدة على ذلك معرفات العملية (PIDs). يمكنك إلقاء نظرة خاطفة على البيانات الوصفية للعملية عبر نظام ملفات زائف يسمى /proc ، ولكن في لمحة سريعة، لا تبدو البيانات مثيرة للاهتمام بشكل خاص. إنها الأشياء التي تراها في إخراج ps أو top :

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

المصدر: Hacker News