با استفاده از زبان C و هدر اندازهٔ پنجرهٔ ترمینال (تعداد سطر و ستون) را با استفاده از تابع ioctl بخوانید و چاپ کنید.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:26 0.0
برای حل این مسئله از POSIX ioctl همراه با struct winsize استفاده کنید: هدرهای مورد نیاز معمولاً ، و هستند. یک struct winsize تعریف کنید و ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsz) را صدا بزنید، مقدار بازگشتی را بررسی کرده و در صورت موفقیت ws.ws_row و ws.ws_col را چاپ کنید؛ در غیر این صورت از perror برای گزارش خطا استفاده کنید. نکتهها: برنامه را در یک ترمینال اجرا کنید (درون محیطی که STDOUT یک ترمینال باشد)، از STDOUT_FILENO به جای 1 استفاده کنید و برای حالتهای شکست یک مقدار پیشفرض در نظر بگیرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که فقط در ترمینالی که stdout به ترمینال متصل است از ioctl استفاده کنید؛ در غیر این صورت اندازهٔ پنجره قابل اعتماد نیست. در صورت شکست، ws را با مقدار پیشفرض مانند 80 سطر و 24 ستون نگه دارید و errno را بررسی کنید. همچنین از STDOUT_FILENO بهجای عدد 1 استفاده کنید و پس از ioctl مقادیر ws.ws_row و ws.ws_col را چاپ کنید و در صورت خطا از perror استفاده کنید. مطمئن شوید هدرهای <sys/ioctl.h> و <unistd.h> (و در برخی سیستمها <linux/termios.h> یا <sys/types.h>) به کد اضافه شدهاند.
گزارش