یک برنامهٔ C بنویسید که با استفاده از ioctl (هدر sys/ioctl.h) اندازهٔ پنجرهٔ ترمینال (تعداد سطرها و ستون‌ها) را خوانده و مقادیر را چاپ کند.

6.0 بازدید آخرین ویرایش در 203 روز قبل ساعت 02:37

0.0

برای حل این مسئله از struct winsize و فراخوان ioctl با دستور TIOCGWINSZ استفاده کنید؛ هدرهای مورد نیاز معمولاً sys/ioctl.h، unistd.h و stdio.h هستند. برنامه باید مقدار بازگشتی ioctl را بررسی کند و در صورت خطا پیام مناسب چاپ کند؛ برای اجرا از فایل باینری در یک ترمینال استفاده کنید (مثلاً gcc prog.c -o prog و سپس ./prog). این تمرین مفاهیم پایه‌ای برنامه‌نویسی سیستم و کار با واسط‌های دستگاه در لینوکس را معرفی می‌کند.

توسط پژوهشگر در 203 روز قبل ساعت 02:37
دسته بندی ها: C for beginner
arash در 203 روز قبل ساعت 09:02

برای خواندن اندازه ترمینال با ioctl و دستور TIOCGWINSZ از ساختار winsize استفاده کنید و fd مناسب (مثلاً STDIN_FILENO) را به ioctl بدهید. مقدار بازگشتی ioctl را بررسی کنید و در صورت خطا با errno و perror یا چاپ پیام مناسب اطلاع‌رسانی کنید. توجه کنید اگر خروجی به فایل یا ترمینال غیرTTY هدایت شده باشد، ممکن است مقداردهی با خطا همراه شود؛ قبل از تماس با ioctl با isatty بررسی کنید. برای سازگاری با لینوکس‌های مختلف، هدرهای sys/ioctl.h، unistd.h و stdio.h را اضافه کنید و با gcc prog.c -o prog کامپایل کنید و سپس ./prog را اجرا کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری