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

标签 c linux file-descriptor tee

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

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

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

谢谢

最佳答案

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

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

所以,AFAICT,您当前的“围绕描述符循环”已经差不多了。

关于c - 使用单个函数调用写入多个文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3445566/

相关文章:

c++ - 从 MS 访问调用 dll 函数

c - 递归结构

linux - 在 Ubuntu 18.04 上,我无法使用 IP 地址从浏览器访问 Tomcat

python-3.x - 为什么 select.select 告诉我它不可读

c - 函数参数接收一个 int "b"数字但打印一个随机数(函数调用函数)

linux - 用两个 QGraphicsSimpleTextItem-s 制作一个 QGraphicsItemGroup?

java - 如何使用java读取linux中的命名管道(FIFO)

C++ MMap 一个文件到内存,然后获取一个文件描述符到该内存

c - 为什么我们需要文件描述符和文件指针

c - 创建char数组后,里面充满了垃圾