Вопрос по c, linux, sockets – Использование stdin с select () в C
У меня есть следующая программа:
<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>
Проблема, с которой я сталкиваюсь, заключается в том, что после обнаружения ввода в STDIN появляется сообщение «Ввод пользователя - stdin». продолжает печатать ... почему он не печатает только один раз и в следующий раз, пока цикл проверяет, какой из дескрипторов имеет ввод?
Благодарю.
2
ответа