برنامهای به زبان C بنویسید که با استفاده از ioctl و هدر sys/ioctl.h اندازهٔ ترمینال (تعداد سطرها و ستونها) را خوانده و در خروجی چاپ کند.
3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:06 0.0
برای حل این مسئله از هدرهای stdio.h، unistd.h و sys/ioctl.h استفاده کنید و با تعریف struct winsize و فراخوانی ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) مقدار ws.ws_row و ws.ws_col را بدست آورید؛ روی مقدار بازگشتی ioctl بررسی خطا کنید و در صورت نیاز از perror برای گزارش خطا کمک بگیرید. این تمرین برای آشنایی با تکنیکهای Systems Programming و مفاهیم پایهای I/O سطح سیستم عامل (مانند فراخوانهای سیستمی ioctl) مناسب است—برای اجرا از ترمینال واقعی استفاده کنید و در صورت عدم موفقیت مقدار پیشفرض قابل نمایش در نظر بگیرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای خواندن اندازهٔ ترمینال با ioctl مطمئن شوید که خروجی استاندارد واقعاً به ترمینال متصل است، زیرا در غیر این صورت مقدار ws ممکن است صحیح نباشد. استفاده از ساختار struct winsize و فراخوانی ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) برای بهدست آوردن ws.ws_row و ws.ws_col رایج است و باید مقدار بازگشتی ioctl را بررسی کنید. در صورت خطا از perror استفاده کنید و در صورت عدم دسترسی به ترمینال مقدار پیشفرضی مانند 24 سطر و 80 ستون را در نظر بگیرید. این تمرین بهویژه با استفاده از هدرهای sys/ioctl.h، unistd.h و stdio.h و مفاهیم پایهٔ I/O سطح سیستم مناسب است.
گزارش