LINUX.ORG.RU

Только вручную :-P Скажем, сделай фунцкию aread, которая внутри себя сначала делает poll.

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

Хех, надо попробовать. :)
Спсб!

anonymous
()
Ответ на: комментарий от Spectr

>а зачем тебе в send/recv флаг O_NONBLOCK ?
"Зачем"=="Почему не используешь"? Оно же в обе стороны включает, разве не так? А мне только "оттуда". :)
Или "почему так сделано?" Изначально всё было на блокирующих с select--ом, но выявилась некая глюкавость. Надо попробовать на неблокирующих замутить, но с буферизацией для send-а пока не хотелось возиться.

anonymous
()
Ответ на: комментарий от erDiZz

Не, MSG_DONTWAIT не пойдёт. Он как раз send разблокирует, а мне надо наоборот recv. А кст, recv с флагом MSG_PEEK заблокируется если ничего нового нет?

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

> "Зачем"=="Почему не используешь"? Оно же в обе стороны включает, разве не так?

нет, не так - можно выставить опцией для сокета в целом (setsockopt) - тогда будет для всех вызовов использоватся, а можно - для конкретного вызова как флаг - тогда сработает только для вызова с этим флагом, не затрагивая сокет в целом.

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

>можно выставить опцией для сокета в целом (setsockopt) - тогда будет для всех вызовов использоватся, а можно - для конкретного вызова как флаг - тогда сработает только для вызова с этим флагом, не затрагивая сокет в целом
Э... Не совсем понял, как выставить как флаг только для _одного_ вызова. MSG_DONTWAIT он ведь для send-а. А мне бы для recv-а.
Что ж, видимо придётся делать всё по-правильному. :)

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