ورود

View Full Version : سوال: دستورات فورک جه هستند؟



natanz
دوشنبه 09 فروردین 1389, 15:13 عصر
میخواستم بدونم انواع دستورات فورک در لینوکس چه هستند؟چطوری میشه اجرا گرفت؟ میشه راهنمایی کنید

a.gh.n
دوشنبه 09 فروردین 1389, 20:47 عصر
میخواستم بدونم انواع دستورات فورک در لینوکس چه هستند؟چطوری میشه اجرا گرفت؟ میشه راهنمایی کنید
برای ساخت یه پروسه ی جدید در یونیکس (و البته شبه یونیکس!) از fork استفاده می شه یا اصطلاحان می گن فلان پروسه fork میشه. موقعی که fork انجام می شه یه پروسه ی جدید ساخته می شه که در واقع کپی از پروسه ای هست که در اون fork صدا شده. این پروسه جدید (child) خواص زیادی رو از پروسه پروسه ی قبلی (parent) به ارث می بره مثل uid و stdin و stdout و env variables. بعد از اجرای پروسه ی child کنترل برنامه به پروسه ی parent بر می گرده.
مثال می تونه این باشه که شما در پوسته (shell) سیستم عامل مثلا دستور
man fork رو اجرا کنید. پروسه ی child برای echo به وجود می یاد و بعد از خاتمه دوباره پوسته فعال می شه.
این که پرسیدی انواع fork باید بگم fork همین مفهوم را داره و نوع دیگه ای از fork نمی شناسم. (مثلا exec عملکرد متفاوتی داره و fork نیست) در اسکریپت نویسی Bash هم دستوراتی که درون {} هستند یک subshell ایجاد می کنند. (یه shell جدید fork می کنن). شاید اینکه بپرسیم کجاها دقیقا fork می شه بهتر باشه.

natanz
پنج شنبه 12 فروردین 1389, 00:06 صبح
شاید اینکه بپرسیم کجاها دقیقا fork می شه بهتر باشه.؟؟
کجا مثلا
میشه راهنمایی کنی؟

a.gh.n
پنج شنبه 12 فروردین 1389, 10:19 صبح
تو همون پست اول گفتم که. تقریبا هر برنامه ای (یعنی builtin نباشه) که از شل صداش کنید، با یک fork همراهه. مثلا شما تو محیط گرافیکی از یک شل فایرفاکس رو ران کنید. با بستن شل فایرفاکس هم بسته می شه چون یک child از اون شل هست. env vars شل رو داره و باقی ویژگی ها.
تو اسکریپت نویسی هم subshell با fork همراهه. subshell وقتی بوجود میاد که مثلا کدی بین {} داشته باشی. (بعضی shell ها مثل fish فاقد subshell هستند)

natanz
پنج شنبه 12 فروردین 1389, 14:25 عصر
میشه چند تا دستور فورک در لینوکس واسم نام ببری غیر از اینا که گفتی
و اینکه چجوری میشه اجراشون گرفت؟
میخوام تخصصی روش کار کنم بررسی کنم و اینکه اجرا بگیرم