proc_pid_fd(5)

الاسم
/proc/pid/fd/ - واصفات الملفات

الوصف

/proc/pid/fd/
    هذا دليل فرعي يحتوي على مدخل واحد لكل ملف يفتحه العملية، مُسمى بواصف الملف، وهو رابط رمزي للملف الفعلي. لذا، 0 هو الإدخال القياسي، 1 الإخراج القياسي، 2 الخطأ القياسي، وهكذا.

    بالنسبة لواصفات الملفات للأنابيب والمقابس، ستكون المدخلات روابط رمزية محتواها هو نوع الملف مع العقدة. استدعاء readlink(2) على هذا الملف يُرجع سلسلة بالتنسيق:

        type:[inode]

    على سبيل المثال، socket:[2248868] سيكون مقبسًا وعقدته هي 2248868. بالنسبة للمقابس، يمكن استخدام تلك العقدة للعثور على مزيد من المعلومات في أحد الملفات تحت /proc/net/.

    بالنسبة لواصفات الملفات التي لا تحتوي على عقدة مقابلة (مثل واصفات الملفات المنتجة بواسطة bpf(2)، epoll_create(2)، eventfd(2)، inotify_init(2)، perf_event_open(2)، signalfd(2)، timerfd_create(2)، و userfaultfd(2))، سيكون المدخل رابطًا رمزيًا بمحتويات من الشكل

        anon_inode:file-type

    في العديد من الحالات (ولكن ليس كلها)، يكون file-type محاطًا بأقواس مربعة.

    على سبيل المثال، سيكون لواصف ملف epoll رابط رمزي محتواه السلسلة anon_inode:[eventpoll].

    في عملية متعددة الخيوط، محتويات هذا الدليل غير متاحة إذا كان الخيط الرئيسي قد أنهى بالفعل (عادةً باستدعاء pthread_exit(3)).

    البرامج التي تأخذ اسم ملف كوسيط سطر أوامر، ولكنها لا تأخذ الإدخال من الإدخال القياسي إذا لم يُقدم وسيط، والبرامج التي تكتب إلى ملف مسمى كوسيط سطر أوامر، ولكنها لا ترسل مخرجاتها إلى الإخراج القياسي إذا لم يُقدم وسيط، يمكن مع ذلك جعلها تستخدم الإدخال القياسي أو الإخراج القياسي باستخدام ملفات /proc/pid/fd كوسائط سطر أوامر. على سبيل المثال، بافتراض أن -i هو العلم الذي يعين ملف إدخال و -o هو العلم الذي يعين ملف إخراج:

        $ foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...

    ولديك مرشح عامل.

    /proc/self/fd/N هو تقريبًا نفس /dev/fd/N في بعض أنظمة UNIX والشبيهة بـ UNIX. معظم نصوص Linux MAKEDEV تربط رمزيًا /dev/fd بـ /proc/self/fd، في الواقع.

    معظم الأنظمة توفر روابط رمزية /dev/stdin، /dev/stdout، و /dev/stderr، والتي تربط على التوالي بالملفات 0، 1، و 2 في /proc/self/fd. وبالتالي يمكن كتابة الأمر المثال أعلاه كالتالي:

        $ foobar -i /dev/stdin -o /dev/stdout ...

    الإذن بإلغاء الإشارة أو قراءة (readlink(2)) الروابط الرمزية في هذا الدليل يُحكم بواسطة فحص وضع الوصول ptrace PTRACE_MODE_READ_FSCREDS؛ انظر ptrace(2).

    لاحظ أنه بالنسبة لواصفات الملفات التي تشير إلى العقد (الأنابيب والمقابس، انظر أعلاه)، تلك العقد لا تزال تحتوي على بتات إذن ومعلومات ملكية متميزة عن تلك الموجودة في مدخل /proc/pid/fd، وأن المالك قد يختلف عن معرفات المستخدم والمجموعة للعملية. عملية غير مميزة قد تفتقر إلى أذونات لفتحها، كما في هذا المثال:

        $ echo test | sudo -u nobody cat
        test
        $ echo test | sudo -u nobody cat /proc/self/fd/0
        cat: /proc/self/fd/0: Permission denied

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

انظر أيضًا
proc(5)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.