Re: fprintf && write
- From
- Valentin Nechayev ()
- To
- Lev Walkin ()
- Date
- 2003-06-05T10:27:52Z
- Area
- RU.UNIX.PROG
From: Valentin Nechayev <netch@segfault.kiev.ua>
>>> Lev Walkin wrote:
>> 1. Получить засыпание при вызове fprintf(...) где-то в ядре на write(..) на
>> очень большое время, что увы неприемлимо.
>> 2. Использовать alarm(time), write()/fprintf(), alarm(0); - я получу 3
>> системных вызова.
LW> а попробуй так:
LW> 1. при открытии дескриптора переводи его в non-blocking mode.
LW> 2. В подобных твоему участках кода делай _сначала_ write(), а уж потом,
LW> если write() вернул -1/EAGAIN, то select:
Непонятно, нахрена тут select() вообще. Если объект неблокирующий,
то просто писать пока буфер не опустошится, write() не скажет EAGAIN,
или ошибка какая не вылезет. select() нужен или для гарантии неблокируемости
последующего write() с O_NONBLOCK, или для выбора, а что же делать следующим.
Блокируемость убрали, точки выбора нет - select() не нужен.
-netch-
--- ifmail v.2.15dev5
* Origin: Dark side of coredump (2:5020/400)