Несколько считывателей на сокете домена Unix?

Я надеялся, что несколько клиентов будут читать из / dev / log (rsyslog и специальный инструмент), который, как я понимаю, является сокетом домена unix.

Как этого достичь?

0
задан 3 June 2016 в 03:36
2 ответа

Теоретически можно открыть процесс, который открывает сокет, вилки и каждый из клиентов может читать из розетки. Но конечный результат, вероятно, не то, что вы хотите. Так как при каждом чтении данные из буфера сокета будут удаляться только одним из процессов, то есть в зависимости от расписания иногда первым дочерним, а иногда и вторым дочерним процессом.

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

syslog/rsyslog может быть таким репликатором, поэтому вам нужно прикрепить туда свой пользовательский читатель.

.
3
ответ дан 4 December 2019 в 12:23

Я не уверен, что вы сможете это сделать (так как я не верю, что это искомый файл, но поток байт), но вы можете записать rsyslog в несколько файлов, в том числе записать его, например, в именованную трубку, из которой может читаться ваша пользовательская утилита. Это, наверное, самое простое решение.

.
0
ответ дан 4 December 2019 в 12:23

Теги

Похожие вопросы