用一个函数调用写入多个文件描述符

我有一个用于组聊天服务器的用例,服务器必须为所有客户端的套接字写一个公共string。 然后,我通过循环遍历文件描述符列表并将string写入每个文件描述符来解决这个问题。

现在我正在考虑find更好的解决scheme。 是否有可能通过在Linux中使用三通系统调用从服务器的单个函数调用来做到这一点。 我想要一个发球台的输出到另一个发球台以及一个客户端套接字。 我想知道,如果我可以重复三通的一端的文件描述符到客户端套接字,并获得所需的效果。

请为您知道的用例提出其他任何实现build议。

谢谢

tee(2)系统调用要求两个文件描述符都是管道 – 所以套接字不计数。 splice(2)vmsplice(2)系统调用也似乎不符合您的要求,我也不知道如何利用sendfile(2)

我还没有遇到过这样的系统调用。 要求收集不同的数据并一次写完(或者阅读相反) – 是的。 但是一次写入多个输出 – 不。

所以,你目前的“描述符循环”大致上就是这样,AFAICT。