Я пытаюсь использовать функцию выбора, чтобы принять ввод, но каждые 2 секунды делают что-то еще, если пользователь ничего не вводил.Приведенный ниже код ждет две секунды при первом достижении select (), но как только он напечатает первое сообщение «timed out», он быстро продолжит печатать «timed out», не дожидаясь 2 секунд, в основном входя в бесконечный цикл.Кто-нибудь знает, в чем проблема?Спасибо за любую помощь.
#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
const int STDIN = 0;
int main(int argc, int *argv[])
{
struct timeval tv;
fd_set readfds, master;
tv.tv_sec = 2;
tv.tv_usec = 0;
FD_ZERO(&readfds);
FD_ZERO(&master);
FD_SET(STDIN, &readfds);
FD_SET(STDIN, &master);
string buffer = "";
while(buffer != "quit"){
readfds = master;
if(select(STDIN+1, &readfds, NULL, NULL, &tv) == -1) perror("select");
if (FD_ISSET(STDIN, &readfds)){
getline(cin, buffer);
cout << "You entered: " << buffer << endl;
}else
cout << "Timed out.\n" << endl;
}
return 0;
}