@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() позволяет определить, произошел ли ввод (больше нуля), превышено ли время ожидания (равно нулю) или возникла ошибка (меньше нуля).