انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: amin-asa در 21 امرداد 1392، 03:48 قظ
-
سلام دوستان
fd یا file descriptor چیه هستن و چه زمانی از اونها استفاده میکنیم؟
-
به فایلهایی که توسط یک پروسه باز شده میگن fd. از دید برنامه نویسی این یه عدد صحیح (معمولا بین 0 تا 1024) هست که فرخوان سیستمی ()open یا روالهای مشابه مثل fopen بر میگردونند. پروسه با این عدد که به یک فایل اشاره میکنه، میتونه توی اون فایل بخونه یا بنویسه. سه تا fd اول رزرو شده هستند. 0 برای ورودی استاندارد، 1 خروجی استاندارد، 2 خطای استاندارد. کاربر غیر برنامه نویس فقط با همین ۳ تا سرور کار داره. همینطور با ulimit هم میشه حداکثر تعداد fd که یک پروسه میتونه همزمان داشته باشه رو مشخص کرد. در ضمن این فایل میتونه یک فایل معمولی، یک سوکت و یا pipe باشه که هر کدوم روشهای مخصوص به خودشون رو برای خوندن و نوشتن دارن. برای فایلهای معمولی ()read و ()write، برای سوکت ها ()send و ()recv و برای pipe ها هم مثلا یه روش این هست که اول پروسه پدر ()fork میشه و یعدش ورودی یا خروجی استانداردش رو میبنده، و پروسه فرزند هم یکی از ورودی/خروجی هاش رو میبنده و از طریق ورودی/خروجی دیگه با هم ارتباط برقرار می کنند. امیدوارم این چند خط برای پیدا کردن چیزی که دنبالش بودید مفید باشه.
-
بله برای من مفید بود. ممنونم.
من پایتون کار می کنم و دیدم این توابع ( read, write ) توی ماژول os هستن.
حالا فرق این توابعی که از fd برای خوندن یا نوشتن استفاده میکنن با متدهای write , read فایل هندل پایتون توی چیه؟
-
من تجربه ای با پایتون ندارم و نمی تونم نظری بدم. منظور من از ()read و ()write روالهای موجود توی استاندارد posix بودند. هر چند که اکثر زبانهای برنامه نویسی هم از مفاهیم مشابهی استفاده می کنند. فکر می کنم بهتره در مورد پایتون من سکوت کنم تا دوستان حرفه ای راهنمایی کند.
-
تمام این توابع در نهایت باید توسط یک FDبه فایل ها دسترسی داشته باشن... کلا هر گونه عملیاتی که مربوط به I/O باشه از طریق
FDها کارش رو انجام میده. توصیه میکنم حتما این مقاله رو بخونید:
http://writeweb.ir/1392/01/everything-is-a-file-in-unix/
-
ممنونم اقای قادری
مقاله خوبی بود به دوستان هم توصیه می کنم این مقاله رو بخونن.