📂 مفهوم File Descriptor
در لینوکس، File Descriptor یا به اختصار FD یک عدد صحیحه که سیستمعامل برای دسترسی به هر فایل، سوکت، یا حتی ورودی/خروجی (مثل کیبورد و ترمینال) استفاده میکنه.
وقتی یک پروسه فایلی رو باز میکنه، کرنل یک عدد بهش اختصاص میده که همون File Descriptor هست (توی عکس بالا خیلی خوب به تصویر کشیده شده میتونید مراحل رو دنبال کنید)
به طور استاندار هر پروسه، سه fd مهم داره:
0 → stdin (ورودی)
1 → stdout (خروجی)
2 → stderr (خطا)
گاها ازشون استفاده کردیم ولی شاید دقت نکردیم دقیقا دارن چی کار میکنن. مثلا وقتی خروجی و ارور یه دستور رو میفرستیم توی یک فایل:
دستور بالا متشکل از 2 ریدایرکت هست:
🔹 بخش اول: (
خروجی یا FD 1 متعلق به پروسه (دستور
🔸 بخش دوم: (
اگر اروری پیش بیاد، اون رو هم میفرسته همونجایی که خروجی (دسکریپتور 1) فرستاده شده.
توی تصویر بالا یک تکه کد پایتون هم هست که بصورت مصور و کامیکطور محاوره بین پروسه و کرنل رو نشون داده.
به طور کلی File Descriptor یه عدد ساده هست، اما در واقع پل ارتباطی بین برنامه و کرنل برای کار با فایلها و منابع I/O محسوب میشه.
🔘 @linux_exp | #linux #fd #file_descriptor
در لینوکس، File Descriptor یا به اختصار FD یک عدد صحیحه که سیستمعامل برای دسترسی به هر فایل، سوکت، یا حتی ورودی/خروجی (مثل کیبورد و ترمینال) استفاده میکنه.
وقتی یک پروسه فایلی رو باز میکنه، کرنل یک عدد بهش اختصاص میده که همون File Descriptor هست (توی عکس بالا خیلی خوب به تصویر کشیده شده میتونید مراحل رو دنبال کنید)
دستور lsof (کوتاه شده List Open Files) نشون میده چه فایلهایی توسط چه پروسههایی باز هستن.
به طور استاندار هر پروسه، سه fd مهم داره:
0 → stdin (ورودی)
1 → stdout (خروجی)
2 → stderr (خطا)
گاها ازشون استفاده کردیم ولی شاید دقت نکردیم دقیقا دارن چی کار میکنن. مثلا وقتی خروجی و ارور یه دستور رو میفرستیم توی یک فایل:
ls /etc > out.txt 2>&1
دستور بالا متشکل از 2 ریدایرکت هست:
🔹 بخش اول: (
ls /etc > out.txt)خروجی یا FD 1 متعلق به پروسه (دستور
ls) ریخته میشه توی فایل out.txt🔸 بخش دوم: (
2>&1)اگر اروری پیش بیاد، اون رو هم میفرسته همونجایی که خروجی (دسکریپتور 1) فرستاده شده.
توی تصویر بالا یک تکه کد پایتون هم هست که بصورت مصور و کامیکطور محاوره بین پروسه و کرنل رو نشون داده.
به طور کلی File Descriptor یه عدد ساده هست، اما در واقع پل ارتباطی بین برنامه و کرنل برای کار با فایلها و منابع I/O محسوب میشه.
🔘 @linux_exp | #linux #fd #file_descriptor
👍5🔥4🆒3❤1