Używanie stdin z select () w C
Mam następujący program:
<code> #include <stdio.h> #define STDIN 0 int main() { fd_set fds; int maxfd; // sd is a UDP socket maxfd = (sd > STDIN)?sd:STDIN; while(1){ FD_ZERO(&fds); FD_SET(sd, &fds); FD_SET(STDIN, &fds); select(maxfd+1, &fds, NULL, NULL, NULL); if (FD_ISSET(STDIN, &fds)){ printf("\nUser input - stdin"); } if (FD_ISSET(sd, &fds)){ // socket code } } } </code>
Problem, z którym mam do czynienia, polega na tym, że po wykryciu wejścia w STDIN komunikat „Wprowadzanie danych przez użytkownika” jest drukowany… dlaczego nie drukuje się tylko raz, a podczas następnego sprawdzania, który z deskryptorów ma wprowadzone dane?
Dzięki.