تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 2 از 2

نام تاپيک: ایجاد fork و pipe

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2007
    پست ها
    195

    پيش فرض ایجاد fork و pipe

    سلام
    من بايد برنامه اي در محيط لينوكس به زبان سي بنويسم
    پروسس پدر بايد اي دي خود را در بافر بنويسد
    واين برنامه بايد به چند تا پروسس فرزند اجازه دهد كه يكي يكي به يك بافر دست يابند و اي دي پدررا بخوانند
    منبع معرفي شده به من لاتين است ونياز مند كمك افرادي هستم كه اطلاعات دارند
    تا حدودي پيش رفته ام و كدي پيدا كرده ام كه فكر مي كنم به دردم مي خورد
    ولي بعضي از خطوط را نمي فهمم
    كد من اين است:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    آيا با تابع فورك fork فرايند پدر و فرزند با هم توليد مي شوند؟
    چند تا فرايند فرزند توليد مي شوند؟
    چطوري بيش از يك فرايند فرزند توليد كنم چون فرايند ها بايد يكي يكي به بافر دست يابند و انرا بخوانند؟
    به اين كد چه چيزي اضافه كنم تا بعد از ساخت فرايند پدر اي دي پدر ارا در بافر بنويسد
    چون اي دي از نوع عدد است آيا بافر را بايد از نوع عدد int تعريف كنم ايرادي پيش نمي ا يد؟
    لطف مي كنيد درمورد خطوطي نوشته ام توضيح دهيد
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    از طریق زیر:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    برنامه در حال پر کردن بافر است ولی من می خواهم که بافر با ای دی پدر پر شود چه کدی بنویسم و یا چه تغیییری ایجاد کنم که این کا ررابکند
    تشکر
    Last edited by آرام جان گل; 10-03-2007 at 10:27. دليل: تغییر

  2. #2
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    دوباره سلام.
    تابع fork ابتدایی ترین راه برای ایجاد یک process هست. وقتی از fork استفاده میکنین یک
    child-process ایجاد میشه. البته به طور کاملتر باید بگم که current-process به دو process شکسته میشه.
    به یک parent-process و یک child-process . میتونید از fork چند بار استفاده کنید.
    با استفاده از تابع getppid میتونید parent-ID رو برگردونید.
    بافر شما بهتره از نوع Integer باشه تا دچار مشکل نشید.

    1-
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    این کد محتویات buf رو به تعداد len در STDOUT_FILENO کپی میکنه و در حقیقت در خروجی نمایش میده.

    2-
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    این کد یک فایل رو در حالت Read-Only باز میکنه. [1]argv اسم فایل مورد نظر هست.که از cmd-line
    دریافت میشه. اگه این تابع نتونه فایل مورد نظر رو باز کنه مقداری که برمیگردونه برابر -1 هست.

    3-
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    این کد باعث میشه برنامه تا تموم شدن کار child-process که pid هست صبرکنه.

    4-
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    این کد به معنی هست: تا زمانی مقدار برگشتی تابع read بزرگتر از 0 باشه مقدار buf رو در [1]fd مینوسه.
    در حقیقت اول از ورودی خونده میشه (fdin ) و در buf قرار داده میشه و بعد این مقدار در فایل [1]fd نوشته
    میشه.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •