Боюсь там очередь на несколько килобайт. Я пока до самого кода не добрался. Завтра погляжу какой там размер буфера пайпа, и как с ним syslogd работает. Может умная мысля и придёт.
я тут опять решил вернуться к.
Тут уже надо машину времени заводить, чтобы на два года вернуться.
в общем у меня следующая идея. переделка довольно обширная, к сожалению. но иначе похоже никак. буфер у pipe не может быть больше 64к похоже. поэтому придется делать буферизацию силами syslogd. т.е. заводить очередь из struct iovlist в struct filed, завести очередь phead для pipe которые надо дописывать, по этой очереди формировать fdsw для select в main(), по EAGAIN помещать в phead и вероятно проверять тут таймаут (например 10с. если превышен то тогда переоткрывать).
Обсуждают сегодня