pooia
pooia
خواندن ۱ دقیقه·۳ سال پیش

ادیتور/ویرایشگر تحت کنسول خود را با C بسازید. (5)

این قسمت هم کوتاه هست، تصمیم گرفتم قسمت ها رو کوتاه کنم ولی به جای یک هفته یک هفته، یک روز یک روز بنویسم


خاموش کردن حالت CANONICAL

ما با استفاده از فلگِ ICANON می توانیم اقدام/مبادرت به خاموش یا روشن کردن حالت کانونیکال کنیم. که یعنی ما ورودی را کاراکتر به کاراکتر/بایت به بایت بجای خط به خط می بینیم.

کد!
کد!


برای همین کد را به مانند زیر/بالا تغییر می دهیم:

#include <unistd.h> #include <termios.h> #include <stdlib.h> struct termios orig; void disableRawMode(); void enableRawMode(){ tcgetattr(STDIN_FILENO , &orig); atexit(disableRawMode); struct termios raw = orig; raw.c_lflag &= ~(ECHO | ICANON); tcsetattr(STDIN_FILENO , TCSAFLUSH, &raw); } void disableRawMode(){ tcsetattr(STDIN_FILENO , TCSAFLUSH ,&orig); } int main(){ enableRawMode(); char ch; while( read(STDIN_FILENO , &ch , 1) && ch != 'q'); return 0; }

و این هم کد تغییر یافته، حالا بگرد و پیدا کن ??

اگر کد قبل رو اجرا می کردید. بعد از زدن q باید enter یا خط جدید می زدید اما حروف بعد از q به ترمینال پاس داده نمی شد.

الان شما مستقما q رو بزنید برنامه بسته می شود.


ویرایشگرادیتورeditorبرنامه نویسی
درحال برنامه نویسی
شاید از این پست‌ها خوشتان بیاید