Назад | Перейти на главную страницу

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

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

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

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

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

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

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