یک برنامهٔ C بنویسید که با استفاده از fork() یک فرایند فرزند برای شبیهسازی حلقهٔ خواندن سنسور در سیستمهای زمانواقعی/تعبیهای ایجاد کند و در صورت بروز خطا از perror (تعریفشده در errno.h) برای گزارش خطا استفاده کند.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:27 0.0
برای حل این مسئله، در برنامه از هدرهای مناسب مانند stdio.h, stdlib.h, unistd.h, sys/wait.h و errno.h استفاده کنید؛ پس از فراخوانی fork() مقدار بازگشتی را بررسی کنید و در صورت منفی بودن با استفاده از perror("fork") خطا را گزارش دهید و خارج شوید. در فرایند فرزند یک حلقهٔ ساده برای شبیهسازی خواندن سنسور (نمایش مقدار نمونه و خواب کوتاه با usleep یا nanosleep) اجرا کنید و در فرایند والد با waitpid منتظر اتمام فرزند بمانید. نکات: همیشه کد بازگشتی فراخوانیهای سیستمی را بررسی کنید، هنگام کامپایل از gcc -Wall استفاده کنید و به محدودیتهای زمانواقعی/تعبیهای (مانند تاخیر و مصرف منابع) توجه داشته باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اطمینان از نبود خطا در fork مقدار بازگشتی را بررسی کنید و در صورت منفی بودن با perror("fork") خطا را گزارش داده و از برنامه خارج شوید. در فرایند فرزند حلقهای برای شبیهسازی خواندن سنسور اجرا کنید و با usleep یا nanosleep تاخیرهای کوچک ایجاد کنید تا مصرف CPU کاهش یابد و رفتار زمانبندی مشخص باشد. در فرایند والد با waitpid منتظر پایان فرزند بمانید و وضعیت خروج او را با WIFEXITED و WEXITSTATUS ارزیابی کنید. در نهایت با gcc -Wall کامپایل کنید تا هشدارهای مربوط به بررسی خروجی فراخوانیهای سیستمی را دریابید.
گزارش