انجمن‌های فارسی اوبونتو

جامعه کاربران => پروژه‌ها => نویسنده: newman2006006 در 18 آبان 1391، 06:33 ب‌ظ

عنوان: برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: newman2006006 در 18 آبان 1391، 06:33 ب‌ظ
با سلام بنده تحقیق دانشجویی زیر را دارم کسی میتونه کد زیر را برام بنویسد؟
براي اين کار برنامه اي بنویسید که از چهار دستور fork متوالی استفاد کند و شانزده پردازه ايجاد کند. با
استفاد از دستورات مربوط به مشخصات پرداز ها براي هر پردازه شماره ID و شماره ID ايجاد کننده آن را بدست
بياورید. درختی بر اساس اين ID ها رسم کنید که رابطه ی child ، parent را نشان دهد.

با تشکر
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: majidkamali1370 در 18 آبان 1391، 07:05 ب‌ظ
با هر بار اجرای fork/exec یه process جدید ایجاد میشه. البته فقط fork پردازه رو ایجاد میکنه. fork آی دی پردازه ایجاد شده رو برمیگردونه.
http://linux.die.net/man/3/fork
http://linux.die.net/man/3/exec
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: newman2006006 در 18 آبان 1391، 07:26 ب‌ظ
با تشکر دوست عزیز ، من برنامه نویسی بلدم اما زبان C بلد نیستم حالا باید چکار کنم می تونید کدش را برام بذارید؟
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: nixoeen در 18 آبان 1391، 07:37 ب‌ظ
با تشکر دوست عزیز ، من برنامه نویسی بلدم اما زبان C بلد نیستم حالا باید چکار کنم می تونید کدش را برام بذارید؟
دیگه اگه قرار هست یکی دیگه براتون بنویسه، چه تحقیقی هستش!!! اگر رشتتون مرتبط با کامپیوتر هست، C رو یاد بگیرید.
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: newman2006006 در 18 آبان 1391، 07:59 ب‌ظ
اگر وقتش را داشتم ، آره ،ولی وقتی وقت ندارم ، مرسی .
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: majidkamali1370 در 18 آبان 1391، 08:34 ب‌ظ
http://www.cplusplus.com/forum/lounge/17684/
این رو یه نگاه بنداز.
جوابی که کد توش هست. قسمت unix اش.
فکر کنم کدش فابل فهم باشه.
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: nixoeen در 18 آبان 1391، 09:36 ب‌ظ
جهان سوم جایی هست که رشته مرتبط با کامپیوتر بخونی و زبانی مثل C رو بلد نباشی، تمرین‌های دانشگاه رو بدی یکی دیگه برات انجام بده، بهانه‌ای که داری این باشه که وقت نداری، با این وجود بتونی مدرک بگیری و بعد هم که مدرک گرفتی از بیکاری و عدم پیشرفت کشور و بی‌سوادی جامعه ناراحت باشی!
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: majidkamali1370 در 18 آبان 1391، 09:43 ب‌ظ
+1 به تعریف جهان سوم
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: newman2006006 در 18 آبان 1391، 09:56 ب‌ظ
عزیزم جهان سومی یعنی اینکه به هر چیزی یک نوک بزنی بعد به هیج کدام هم نرسی ، عزیزم در زمینه طراحی وب و برنامه نویسی وب هر سوالی داشتی می تونی
http://faq.kingofpersia.ir/ مطرح کنی .
در ضمن جهان سوم یعنی اینکه فروم بزنی بعد در جواب سوال بگی برو خودت یاد بگیر.
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: doomhammer65ir در 18 آبان 1391، 10:32 ب‌ظ
می بینم که واژه ی انجمن را دوباره معنی فرمودید

عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: nixoeen در 18 آبان 1391، 10:53 ب‌ظ
در ضمن جهان سوم یعنی اینکه فروم بزنی بعد در جواب سوال بگی برو خودت یاد بگیر.
انجمن محلی رای رفع اشکال هستش، نه گرفتن جواب تکلیف‌های دانشگاهی.
هر چیزی مراحلی داره. خوب شما می‌خواید بدونید fork توی C چجوری کار می‌کنه، ولی هنوز C رو بلد نیستید. خوب مسلما قدم اول یادگیری C هستش. بعد مطالعه در مورد fork. بعد یک برنامه با fork می‌نویسید، ولی درست کار نمی‌کنه، اینجا اون برنامه رو می‌نویسید و ما می‌تونیم کمک کنیم شما مشکل اون برنامه رو حل کنید.

نه اینکه من بیام اینجا بنویسم استاد من امروز این تکلیف رو داده، منم وقت ندارم، لطفا برای من حلش کنید که من فردا تحویلش بدم. اگر انجمنی هم این کار رو بکنه، تنها محلی هستش برای بی‌ارزش‌تر کردن مدرک‌های دانشگاهی.
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: newman2006006 در 18 آبان 1391، 11:09 ب‌ظ
خوب دوست عزیز من برنامه را تا جایی نوشتم حالا می دونی چطور شناسه ها را بصورت درختی نمایش دهم؟
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: nixoeen در 18 آبان 1391، 11:27 ب‌ظ
خوب دوست عزیز من برنامه را تا جایی نوشتم حالا می دونی چطور شناسه ها را بصورت درختی نمایش دهم؟
خوب چیزی که نوشتید رو اینجا بذارید و بگید وقتی اجرا می‌کنیدش چه IDهایی رو میده.
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: newman2006006 در 18 آبان 1391، 11:41 ب‌ظ
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
int main()
{
int i;
for(i=0;i<4;i++)
{
fork();
printf("the proccess id is %d and parent id is %d",getpid(),getppid() ");
}
}
البته فکر کنم اشتباست ، ولی من اون قسمت ترسیم درختی را پیدا کنم این را خود حل می کنم
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: nixoeen در 19 آبان 1391، 02:12 ق‌ظ
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
int main()
{
int i;
for(i=0;i<4;i++)
{
fork();
printf("the proccess id is %d and parent id is %d",getpid(),getppid() ");
}
}
البته فکر کنم اشتباست ، ولی من اون قسمت ترسیم درختی را پیدا کنم این را خود حل می کنم
اشتباه هستش. وقتی متوجه بشی چطور این برنامه کار می‌کنه و خروجی اون رو هم بگیری، به راحتی می‌تونی اون ترسیم درختی هم انجام بدی. این برنامه ابتدا دستور fork رو چهار بار اجرا می‌کنه. این یعنی ۴ بار دیگه این برنامه اجرا میشه. هر کدوم از اون چهارتا، چهار بار دیگه این برنامه رو اجرا می‌کنند و همینطور تا ابد این برنامه خودش رو اجرا می‌کنه.
به این می‌گن Fork Bomb (لینک (http://en.wikipedia.org/wiki/Fork_bomb))، چون ناگهان کلی پراسس روی سیستم میاره و کل حافظه رو می‌گیره و می‌تونه شما رو مجبور کنه سیستم رو ریستارت کنید.
راهنمایی: باید قبل از اینکه دستور fork رو اجرا بکنی، بررسی بکنی که آیا باید اجرا بشه یا نه. (چک کنی الان در parent هستی یا در child)
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: majidkamali1370 در 19 آبان 1391، 09:43 ق‌ظ
شما اینها رو هم به برنامت اضافه کن که بتونی ID پروسه رو بگیری.
pid_t pid;
pid = fork();
حالا متغیر pid آی دی اون پروسه رو داره.
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: newman2006006 در 19 آبان 1391، 10:07 ق‌ظ
متشکرم از حوابتون.
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: newman2006006 در 19 آبان 1391، 10:45 ق‌ظ
با توجه به جواب های شما شد این ، لطفاً بگید تحلیل من کجاش اشتباست.
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
int main()
{
pid_t pid_1;
pid_t pid_2;
pid_t pid_3;
pid_t pid_4;

pid_1=fork();
pid_2=fork();
pid_3=fork();
pid_4=fork();

if(pid_1==0)
{
printf("The proccess is child and id is %d",getpid());
printf("The proccess is parent and id is %d",getppid());
}
else
{
printf("The proccess is parent and id is %d",getpid());
printf("The proccess is parent and id is %d",getppid());
}
if(pid_2==0)
{
printf("The proccess is child and id is %d",getpid());
printf("The proccess is parent and id is %d",getppid());
}
else
{
printf("The proccess is parent and id is %d",getpid());
printf("The proccess is parent and id is %d",getppid());
}
if(pid_3==0)
{
printf("The proccess is child and id is %d",getpid());
printf("The proccess is parent and id is %d",getppid());
}
else
{
printf("The proccess is parent and id is %d",getpid());
printf("The proccess is parent and id is %d",getppid());
}
if(pid_4==0)
{
printf("The proccess is child and id is %d",getpid());
printf("The proccess is parent and id is %d",getppid());
}
else
{
printf("The proccess is parent and id is %d",getpid());
printf("The proccess is parent and id is %d",getppid());
}

}
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: nixoeen در 19 آبان 1391، 03:41 ب‌ظ
راهنمایی: باید قبل از اینکه دستور fork رو اجرا بکنی، بررسی بکنی که آیا باید اجرا بشه یا نه. (چک کنی الان در parent هستی یا در child)
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: دانیال بهزادی در 19 آبان 1391، 09:11 ب‌ظ
به نظرم قبلش مطالب مربوط به فراخوان‌های سیستمی رو تو کتاب «طراحی و پیاده‌سازی سیستم‌های عامل» از آقامون تنن‌باوم بخون. کدت رو نمی شه خوند، چون منطقش مشکل داره
عنوان: پاسخ : برنامه با تابع Fork به زبان C در لینوکس
ارسال شده توسط: امین - am1n در 12 بهمن 1391، 12:51 ب‌ظ
اگه وقت کنم چند روز دیگه حتما این برنامه رو می شینم می نویسم :) باحاله