Re: fprintf && write

From
Lev Walkin ()
To
Valentin Nechayev ()
Date
2003-06-05T10:46:52Z
Area
RU.UNIX.PROG
From: Lev Walkin <vlm@netli.com>


Valentin Nechayev wrote:
>>>>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() не нужен.

ему нужно было timeout сделать.

-- 
Lev Walkin
vlm@netli.com

--- ifmail v.2.15dev5
 * Origin: Netli, Inc. (2:5020/400)