PDA

View Full Version : سوال دو مورد تابع fork



amirmafia
شنبه 02 اردیبهشت 1391, 01:00 صبح
سلام به اساتید همان طور که از عنوان پست معلومه میخوام بدونم کار این تابع

fork()
چون من تو کتاب های فارسی در این مورد گشتم ولی چیزی پیدا نکردم ممنون میشم اگه راهنمایی کنید

one hacker alone
شنبه 02 اردیبهشت 1391, 12:31 عصر
ببينيد دوست عزيز شما در بعضي برنامه هايتوي نياز داريد برنامه شما دو تكه بشه يعني نميتونيد بعضي كارهاتون رو با يه پروسس انجام بدين مثلا شما برنامه اي نوشتين كه وقتي توي سيستم طرف اجرا شد به جاي سرويس هاي واقعي بره پورت ها رو گوش بده و پاسخ جعلي بهشون بده خوب اين وسط چون سرويس ها زياد هست شما با يه پروسس نميتونيد جواب همشون رو بدين اينجور مواقع بايد به تعداد نيازتون پروسس بسازيد حالا اين تابع كارش اينه كه پروسس ميسازه و PID اون پروسس رو به شما برميگردونه كه شما ميتونيد با اون PID دستورات لازم رو براي پروسس جديد بفرستين اين تابع رو معمولا تابع پدر ميخونن چون پروسس هايي كه توليد ميكنه بچه هاي اون هستن اين تابع مبحث مهم در برنامه نويسي هست كه بايد ياد بگيريد البته كار كردن باهاش خيلي ساده هست

amirmafia
شنبه 02 اردیبهشت 1391, 21:44 عصر
ممنون دوست عزیز امکان داره با یک مثال هم توضیح بدید تا روشن شه بهتر قضیه
ممنون میشم

one hacker alone
یک شنبه 03 اردیبهشت 1391, 03:38 صبح
نكته اول اينكه تابع fork در كتابخانه unix standard هست يعني فايل سرآيند unistd.h
نكته دوم اينكه ما بايد يه متغير براي ذخيره كردن PID توليد شده توسط تابع تعريف كنيم كه با نوع داده int ميشه اينكار رو انجام داد اما اومدم باتوجه به اندازه pid يه نوع داده براش ساختن به اسم pid_t كه شما از هر كدوم دوست داشتي استفاده كن پس


int PID;
pid_t PID;

هر دو صحيح هست
نكته سوم اينكه fork رو با thread ها اشتباه نگيريد اينها با هم فرق دارن يعني كاري كه شما با fork ميكنيد چند نخي نيست
براي مثال هم چند پايين لينك ميزارم نگاه كنيد اگه متوجه نشدين توضيح ميدم
اگه وقت كنم يه مقاله كوتاه و مفيد در مورد اين تابع مهم رو جالب رو ترجمه ميكنم اينجاميزارم
http://www.amparo.net/ce155/fork-ex.html
http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html