انجمنهای فارسی اوبونتو
جامعه کاربران => پروژهها => نویسنده: newman2006006 در 18 آبان 1391، 06:33 بظ
-
با سلام بنده تحقیق دانشجویی زیر را دارم کسی میتونه کد زیر را برام بنویسد؟
براي اين کار برنامه اي بنویسید که از چهار دستور fork متوالی استفاد کند و شانزده پردازه ايجاد کند. با
استفاد از دستورات مربوط به مشخصات پرداز ها براي هر پردازه شماره ID و شماره ID ايجاد کننده آن را بدست
بياورید. درختی بر اساس اين ID ها رسم کنید که رابطه ی child ، parent را نشان دهد.
با تشکر
-
با هر بار اجرای fork/exec یه process جدید ایجاد میشه. البته فقط fork پردازه رو ایجاد میکنه. fork آی دی پردازه ایجاد شده رو برمیگردونه.
http://linux.die.net/man/3/fork
http://linux.die.net/man/3/exec
-
با تشکر دوست عزیز ، من برنامه نویسی بلدم اما زبان C بلد نیستم حالا باید چکار کنم می تونید کدش را برام بذارید؟
-
با تشکر دوست عزیز ، من برنامه نویسی بلدم اما زبان C بلد نیستم حالا باید چکار کنم می تونید کدش را برام بذارید؟
دیگه اگه قرار هست یکی دیگه براتون بنویسه، چه تحقیقی هستش!!! اگر رشتتون مرتبط با کامپیوتر هست، C رو یاد بگیرید.
-
اگر وقتش را داشتم ، آره ،ولی وقتی وقت ندارم ، مرسی .
-
http://www.cplusplus.com/forum/lounge/17684/
این رو یه نگاه بنداز.
جوابی که کد توش هست. قسمت unix اش.
فکر کنم کدش فابل فهم باشه.
-
جهان سوم جایی هست که رشته مرتبط با کامپیوتر بخونی و زبانی مثل C رو بلد نباشی، تمرینهای دانشگاه رو بدی یکی دیگه برات انجام بده، بهانهای که داری این باشه که وقت نداری، با این وجود بتونی مدرک بگیری و بعد هم که مدرک گرفتی از بیکاری و عدم پیشرفت کشور و بیسوادی جامعه ناراحت باشی!
-
+1 به تعریف جهان سوم
-
عزیزم جهان سومی یعنی اینکه به هر چیزی یک نوک بزنی بعد به هیج کدام هم نرسی ، عزیزم در زمینه طراحی وب و برنامه نویسی وب هر سوالی داشتی می تونی
http://faq.kingofpersia.ir/ مطرح کنی .
در ضمن جهان سوم یعنی اینکه فروم بزنی بعد در جواب سوال بگی برو خودت یاد بگیر.
-
می بینم که واژه ی انجمن را دوباره معنی فرمودید
-
در ضمن جهان سوم یعنی اینکه فروم بزنی بعد در جواب سوال بگی برو خودت یاد بگیر.
انجمن محلی رای رفع اشکال هستش، نه گرفتن جواب تکلیفهای دانشگاهی.
هر چیزی مراحلی داره. خوب شما میخواید بدونید fork توی C چجوری کار میکنه، ولی هنوز C رو بلد نیستید. خوب مسلما قدم اول یادگیری C هستش. بعد مطالعه در مورد fork. بعد یک برنامه با fork مینویسید، ولی درست کار نمیکنه، اینجا اون برنامه رو مینویسید و ما میتونیم کمک کنیم شما مشکل اون برنامه رو حل کنید.
نه اینکه من بیام اینجا بنویسم استاد من امروز این تکلیف رو داده، منم وقت ندارم، لطفا برای من حلش کنید که من فردا تحویلش بدم. اگر انجمنی هم این کار رو بکنه، تنها محلی هستش برای بیارزشتر کردن مدرکهای دانشگاهی.
-
خوب دوست عزیز من برنامه را تا جایی نوشتم حالا می دونی چطور شناسه ها را بصورت درختی نمایش دهم؟
-
خوب دوست عزیز من برنامه را تا جایی نوشتم حالا می دونی چطور شناسه ها را بصورت درختی نمایش دهم؟
خوب چیزی که نوشتید رو اینجا بذارید و بگید وقتی اجرا میکنیدش چه IDهایی رو میده.
-
#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() ");
}
}
البته فکر کنم اشتباست ، ولی من اون قسمت ترسیم درختی را پیدا کنم این را خود حل می کنم
-
#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)
-
شما اینها رو هم به برنامت اضافه کن که بتونی ID پروسه رو بگیری.
pid_t pid;
pid = fork();
حالا متغیر pid آی دی اون پروسه رو داره.
-
متشکرم از حوابتون.
-
با توجه به جواب های شما شد این ، لطفاً بگید تحلیل من کجاش اشتباست.
#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 رو اجرا بکنی، بررسی بکنی که آیا باید اجرا بشه یا نه. (چک کنی الان در parent هستی یا در child)
-
به نظرم قبلش مطالب مربوط به فراخوانهای سیستمی رو تو کتاب «طراحی و پیادهسازی سیستمهای عامل» از آقامون تننباوم بخون. کدت رو نمی شه خوند، چون منطقش مشکل داره
-
اگه وقت کنم چند روز دیگه حتما این برنامه رو می شینم می نویسم :) باحاله