Unix域套接字上的多个阅读器?

我希望有多个客户端阅读从/ dev / log(rsyslog和一个自定义工具),我知道是一个unix域套接字

这怎么能实现?

理论上你可以打开一个打开套接字的进程,分叉,然后每个客户端都可以从套接字读取数据。 但最终的结果可能不是你想要的。 由于每次读取都会从套接字缓冲区中删除数据,因此只有其中一个进程会获取数据,即根据调度有时是第一个subprocess,有时是第二个subprocess。

但我想你想让所有的读者获得所有的数据。 在这种情况下,您需要有某种复制器,即从套接字读取数据并将这些数据复制到所有读取器(使用套接字或其他)的过程中。

syslog / rsyslog可以是这样一个复制器,所以你需要附加你的自定义阅读器。

我不知道你能做到这一点(因为我不相信这是一个可查找的文件,而是一个字节stream),但是你可以让rsyslog写入多个文件,包括写入到多个文件中,例如一个namedpipe道,你的自定义工具可以读取。 这可能是最简单的解决scheme。