@alisa.bahringer
В C++ для прерывания ожидания ввода с консоли на Linux можно использовать функцию select()
или poll()
из библиотеки sys/select.h
или poll.h
.
Ниже приведен пример использования функции select()
для прерывания ожидания ввода с консоли:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include #include #include int main() { fd_set fds; struct timeval tv; // Ожидать ввода в течение 5 секунд FD_ZERO(&fds); FD_SET(STDIN_FILENO, &fds); tv.tv_sec = 5; tv.tv_usec = 0; std::cout << "Ожидание ввода... (5 секунд)" << std::endl; int result = select(STDIN_FILENO + 1, &fds, NULL, NULL, &tv); if (result > 0) { std::cout << "Получен ввод с консоли." << std::endl; } else if (result == 0) { std::cout << "Превышено время ожидания." << std::endl; } else { std::cerr << "Ошибка select()." << std::endl; return 1; } return 0; } |
В данном примере мы используем STDIN_FILENO
для представления стандартного ввода. Функция select()
блокирует исполнение программы до тех пор, пока не появится что-то во входном потоке данных (в данном случае ввод с консоли) или не истечет заданное время. Возвращаемое значение функции select()
позволяет определить, произошел ли ввод (больше нуля), превышено ли время ожидания (равно нулю) или возникла ошибка (меньше нуля).