bbviewer.c 865 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <termios.h>
  4. void enableRawMode() {
  5. struct termios tty;
  6. tcgetattr(STDIN_FILENO, &tty);
  7. tty.c_lflag &= ~(ICANON | ECHO);
  8. tcsetattr(STDIN_FILENO, TCSAFLUSH, &tty);
  9. }
  10. void disableRawMode() {
  11. struct termios tty;
  12. tcgetattr(STDIN_FILENO, &tty);
  13. tty.c_lflag |= ICANON | ECHO;
  14. tcsetattr(STDIN_FILENO, TCSAFLUSH, &tty);
  15. }
  16. int main() {
  17. enableRawMode();
  18. char buf[3];
  19. while (1) {
  20. ssize_t n = read(STDIN_FILENO, buf, sizeof(buf));
  21. if (n == 1 && buf[0] == 'q') break;
  22. // Печатаем все полученные байты
  23. printf("Read %zd bytes: ", n);
  24. for (ssize_t i = 0; i < n; i++) {
  25. printf("%d ", (unsigned char)buf[i]);
  26. }
  27. printf("\n");
  28. fflush(stdout);
  29. }
  30. disableRawMode();
  31. return 0;
  32. }