توصیف‌گر پرونده

در علوم رایانه توصیف‌گر پرونده[و ۱] معمولاً یک عدد صحیح است که برای اشاره به یک پروندهٔ بازشده به کار می‌رود. توابع رایجی که از توصیف‌گر پرونده استفاده می‌کنند عبارتند از بازکردن، بستن، نوشتن و خواندن. برای نمونه تابع باز کردن (open) پس از باز کردن یک پرونده، یک توصیف‌گر پرونده که یک عدد صحیح بی‌همتا میان پرونده‌های بازشده است برمی‌گرداند. این توصیف‌گر پرونده را می‌توان همانند یک اشاره‌گر در غالب یک آرگومان به دیگر توابع داد. در صورتی که خطایی در این توابع رخ دهد مقدار -۱ را بازمی‌گردانند.[۱]

توصیف‌گر پرونده

کلیهٔ روال‌های یونیکس که با پرونده‌ها سر و کار دارند برای شناسایی پرونده‌ای که روی آن کار می‌کنند از اشاره‌گر یا توصیف‌گر پرونده استفاده می‌کنند. در این روش کلیهٔ فراخوانی‌های سیستم که با پرونده‌ها تعامل دارند یک توصیف‌گر پرونده می‌گیرند یا برمی‌گردانند. این توصیف‌گر معمولاً یک عدد صحیح کوچک بین ۰ تا ۲۵۵ است.[۲] این عدد شاخصی است که محل پرونده را در جدول توصیف‌گر پرونده[و ۲] توصیف می‌کند که این جدول برای هر پروسه جداگانه تعریف می‌شود و مقیم هسته[و ۳] است. با وجود اینکه امکان استفاده از توصیف‌گرهای پروندهٔ یک پروسه در پروسهٔ دیگر وجود ندارد، اما بسیاری از سیستم‌های یونیکس امکان انتقال توصیف‌گر پرونده بین پروسه‌ها را از راه یک سوکت[و ۴] فراهم می‌کنند.[۳] با باز کردن هر پرونده یک اشاره‌گر به ساختارهای درونی داده‌ها برای آن پرونده درون جدول توصیف‌گر پرونده ایجاد می‌شود و شاخص عددی آن پرونده در جدول توسط تابعی که فراخوانی را انجام داده است برگردانده می‌شود. برنامه‌های کاربردی می‌توانند تنها بر پایهٔ توصیف‌گر پرونده با پرونده‌ها در ارتباط باشند و سایر جزئیات لازم را سیستم‌عامل با دنبال کردن اشاره‌گری که در جدول آمده انجام می‌دهد.[۴]

جستارهای وابسته ویرایش

واژه‌نامه ویرایش

  1. File descriptor
  2. file descriptor table
  3. kernel-resident
  4. socket

منابع ویرایش

  • Yocom, Nathan; Turner, John; Davis, Keir (2004). The Definitive Guide to Linux Network Programming (به انگلیسی). Apress. Retrieved 2013-04-09.
  • Singh, Amit (2006). Mac OS X Internals: A Systems Approach (به انگلیسی). Addison-Wesley Professional. Retrieved 2013-04-09.
  • Linden, Peter van der (1994). Expert C Programming[: Deep C Secrets (به انگلیسی). Prentice Hall Professional. Retrieved 2013-04-09.
  • Erickson, Jon (2008). Hacking: the art of exploitation (به انگلیسی). No Starch Press. Retrieved 2013-04-09.