Вопрос по стандарту - PullRequest
       2

Вопрос по стандарту

0 голосов
/ 10 августа 2011

У меня есть следующее требование;

1) выбрать блоки в дескрипторе файла, связанном с stdin

2) Теперь, как мне написать такой код, чтобы select разблокировался. Код должен обеспечить готовность дескриптора файла stdin к прочтению. Другими словами, код должен разблокировать select, не дожидаясь, пока пользователь введет данные

1 Ответ

1 голос
/ 10 августа 2011

Если мы говорим о системном вызове select UNIX, и вы используете его для ожидания данных на stdin, вы можете использовать параметр тайм-аута, чтобы указать выбор, который вы хотите заблокировать, в течение максимум секунд. 1003 *

Из select man в Linux :

#include <sys/select.h>
int select(int nfds, fd_set *readfds, fd_set *writefds,
           fd_set *exceptfds, struct timeval *timeout);

Тайм-аут - это верхняя граница количества времени, прошедшего до выбора () возвращается. Это может быть ноль, в результате чего select () возвращается немедленно. (Это полезно для опроса.) Если время ожидания равно NULL (нет времени ожидания), select () может блокировать на неопределенный срок.

Временные структуры определены и выглядят как

struct timeval {
  long    tv_sec;         /* seconds */
  long    tv_usec;        /* microseconds */
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...