Как отключить буферизацию ввода и эхо-вывод (termios.h, stdin)? Хочу сделать консольный слайдер для набора информации, т.е. нужно немедленное реагирование на нажатие клавиш для переключения слайдов. Мне не помог вызов функций setbuf(stdin, NULL) и setvbuf(stdin, NULL, _IONBF, 0) В книги Прата говорилось о функции ioctl для unix-подобных систем. помогите с ней разобраться? Спасибо.
Для отключения буферизации ввода и эхо-вывода ввода с клавиатуры можно использовать функцию tcgetattr и tcsetattr из библиотеки termios.h. Пример кода для отключения буферизации и эхо-вывода:
Для отключения буферизации ввода и эхо-вывода ввода с клавиатуры можно использовать функцию tcgetattr и tcsetattr из библиотеки termios.h. Пример кода для отключения буферизации и эхо-вывода:
#include <stdio.h>#include <termios.h>
#include <unistd.h>
void disableBuffering() {
struct termios t;
tcgetattr(STDIN_FILENO, &t);
t.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &t);
}
int main() {
disableBuffering();
// ваш код для консольного слайдера
return 0;
}
Этот код отключит буферизацию и эхо-вывод для стандартного ввода (stdin) и позволит вам немедленно реагировать на нажатие клавиш.