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

时间:2010-08-10 02:14:51

标签: c linux file-descriptor tee

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

现在我正在考虑找到一个更好的解决方案。是否可以通过在Linux中使用tee系统调用从服务器进行单个函数调用来完成此操作。我希望一个发球台的输出转到下一个发球台以及客户插座。我想知道我是否可以将tee一端的文件描述符复制到客户端套接字并获得所需的效果。

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

由于

1 个答案:

答案 0 :(得分:2)

tee(2)系统调用要求两个文件描述符都是管道 - 因此套接字不计算在内。 splice(2)vmsplice(2)系统调用似乎也不符合您的要求,我也看不到如何使用sendfile(2)

我没有遇到过这样的系统调用。要求收集各种数据并一次性写入(或者反过来阅读) - 是的。但是要立刻写入多个输出 - 没有。

所以,你当前的“描述符循环”与AFAICT一样好。