C++ wählen Sie() nicht warten, für den timeout-Zeitraum

Ich versuche, verwenden Sie die Funktion wählen, Eingaben zu übernehmen, aber alle 2 Sekunden etwas anderes zu tun, wenn der Benutzer nicht eingetragen, nichts. Der code unten ist, wartet zwei Sekunden das erste mal select() ist erreicht, aber sobald es druckt die ersten "timed out" Meldung das es schnell halten Ausdruck "timed out", ohne zu warten, für 2 Sekunden, im Grunde in eine Endlosschleife. Wer weiß, was das problem ist? Vielen Dank für jede Hilfe.

#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;
}
InformationsquelleAutor pandaEater | 2012-02-29
Schreibe einen Kommentar