LINUX.ORG.RU

select() Уточнение работы


0

0

День добрый
Уточните поведение select, не могу прояснить для себя пару нюансов.

У меня есть набор дескрипторов для слежения, например, на чтение.

Я вызываю select с таймаутом.
Какие из утверждений будут истинными:
1. По истечении времени таймаута select прекратит выполнение и возвратит количество "готовых" дескрипторов.
2. select возвратит управление немедленно (не дожидаясь таймаута), если ХОТЯ БЫ ОДИН из набора дескрипторов будет готов.
3. select возвратит управление немедленно (не дожидаясь таймаута) только если ВСЕ ДЕСКРИПТОРЫ будут готовы на чтение.
4. При вызове с таймаутом (!=NULL) select всегда будет ожидать окончание таймаута, даже если все дескрипторы уже "готовы".

Пусть таймаут=NULL (бесконечное ожидание)
Какие из утверждений будут истинными:
1. select возвратит управление если хотя бы один дескриптор будет готов.
2. select будет "висеть" до тех пор, пока ВСЕ опрашиваемые дескрипторы не будут готовы.

Спасибо

★★

1. При истечении таймаута select вернёт 0. Если хоть один дескриптор готов - то это уже будет не истечение таймаута.
2. true
3. false
4. false

Без таймаута:
1. true
2. false

P.S. Возможно я где-то ошибся, man 2 select разбирается в теме гораздо лучше меня =).

Deleted
()
Ответ на: комментарий от tailgunner

Спасибо большое. Мне нужно эмулировать поведение select для файлов и каналов.

poll() в этой системе отсутствует. select() может применяться только к сокетам Взамен, правда,есть много других вкусностей. Что за ось - не скажу :)

Alphaer ★★
() автор топика
Ответ на: комментарий от Alphaer

> poll() в этой системе отсутствует. select() может применяться только к сокетам

...и pty/tty.

> Взамен, правда,есть много других вкусностей. Что за ось - не скажу :)

И так понятно, что это RTEMS :)

tailgunner ★★★★★
()

> По истечении времени таймаута select прекратит выполнение и возвратит количество "готовых" дескрипторов

нет, он просто отвалится.

> select возвратит управление немедленно (не дожидаясь таймаута), если ХОТЯ БЫ ОДИН из набора дескрипторов будет готов.

да

> При вызове с таймаутом (!=NULL) select всегда будет ожидать окончание таймаута, даже если все дескрипторы уже "готовы".

нет.

> select возвратит управление если хотя бы один дескриптор будет готов.

да.

Rastafarra ★★★★
()

Спасибо, друзья. Теперь уложилось в башке

Alphaer ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.