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