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

2023-12-26

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

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

请针对您所知道的用例提出任何其他实现。

Thanks


The tee(2) http://linux.die.net/man/2/tee系统调用要求两个文件描述符都是管道 - 因此套接字不计算在内。这splice(2) http://linux.die.net/man/2/splice and vmsplice(2) http://linux.die.net/man/2/vmsplice系统调用似乎也不能满足您的要求,我不知道如何利用sendfile(2) http://linux.die.net/man/2/sendfile either.

我还没有遇到过这样的系统调用。要求收集不同的数据并一次将其全部写入(或者读取时则相反) - 是的。但对于一次写入多个输出 - 不。

所以,你当前的“围绕描述符的循环”已经尽善尽美了,AFAICT。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用单个函数调用写入多个文件描述符 的相关文章

  • 如何重命名序列化对象列表后生成的 XML 属性

    我正在序列化对象列表List
  • 使用空函数调用 hana::is_valid 的用途是什么?

    Boost Hana https www boost org doc libs 1 61 0 libs hana doc html index html offers boost hana is valid https www boost
  • WPF Dispatchertimer 延迟反应/冻结

    在我的 WPF 应用程序中 我使用 3 个不同的 DispatcherTimers 一种是用于显示当前时间 一种是每 5 秒运行一次数据库查询 第三个每 1 秒刷新一次自定义按钮的值 当我的程序运行时 有很多延迟 冻结 例如 时间开始正确计
  • 当我使用 SetWindowsHookEx WH_KEYBOARD_LL 交换按键时,为什么我的程序会陷入过多键盘输入事件的循环?

    I am trying to write a program for Windows system that swaps the A and B keys i e when I press the A key B gets typed an
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • 多维数组和指向指针的指针

    创建多维数组时char a 10 10 根据我的书 它说你必须使用类似于char a 10 将数组传递给函数 为什么必须这样指定长度 您不是只是将双指针传递给 with 并且该双指针不是已经指向分配的内存吗 那么为什么参数不能是char a
  • 以编程方式运行 T4 文本模板

    有没有一种方法可以通过代码以编程方式运行 T4 文本模板 我正在制作一种自定义域特定语言 我希望相关的文本模板在用户每次保存时运行 目前 这就是我在 DSL 模型中所做的事情 protected override void OnDocume
  • 如何在Azure功能中添加razor视图文件?

    我正在创建一个应用程序 它是 azure 函数项目 我想在该项目中使用 Razor 视图 我应该在 azure 函数中使用任何模板引擎吗 得益于一些方面的进步剃刀之光项目 https github com toddams RazorLigh
  • 我可以在 C++ 中重写非虚函数吗

    我想知道我可以重写 C 中的非虚函数吗 因为我在使用 C 时发现了这个问题override关键字我的代码如下 class A public void say cout lt lt From A n class B public A publ
  • 将授权标头添加到 Web 参考

    我正在尝试向客户端的网络服务发出请求 我不知道客户端的底层平台 我使用 添加 Web 引用 在 Visual Studio 2010 中使用了客户端的 WSDL 并生成了我的代理类 称为 ContactService 我现在需要将如下所示的
  • 为什么必须通过 this 指针访问模板基类成员?

    如果下面的类不是模板 我可以简单地拥有x in the derived班级 但是 通过下面的代码 我have to use this gt x Why template
  • 生成范围 [min,max] 内的随机数 [重复]

    这个问题在这里已经有答案了 我正在使用 C 生成范围 min max 内的整数随机数 我在用 int random int int min int max return min rand max min 但我认为上面的代码适用于范围 min
  • C++ 联合数组和变量?

    在C 中没有办法做这样的事情吗 union Scalar x y Scalar v 2 Where x v 0 and y v 1 既然您使用的是 C 而不是 C 并且它们具有相同的类型 为什么不直接将 x 设为对 v 0 的引用 将 y
  • 如何组合||条件语句中的运算符[重复]

    这个问题在这里已经有答案了 代替 if foo 1 foo 5 foo 9 我喜欢将它们组合起来 类似于以下内容 这不起作用 if foo 1 5 9 那可能吗 不幸的是不是 你最好的选择是创建一个扩展方法 public static bo
  • 用于 nmap 输出的 C++ xml 解析器

    我是 nmap 的新手 我在 nmap 教程中看到 https nmap org book man output html https nmap org book man output html oX 选项可用于获取 xml 格式的 nma
  • 使用 MVC5、Ajax、C# 和 MSSQL Server 级联 DropdownList

    我对来自 Windows 窗体和三层架构的 MVC 非常陌生 我试图找出使用从数据库填充的级联下拉列表 DDL 我使用 MS SQL Server 2012 VS 2013 目前我正在研究用户调查问卷 用户可以从 DDL 的多个答案中进行选
  • “显式”关键字对返回值优化 (RVO) 有何影响?

    以下代码工作得很好 显示 RVO struct A A int cout lt lt A A n constructor A const A cout lt lt A A const A n copy constructor A foo r
  • 替换全局热键

    我有一个位于托盘中的应用程序 我想定义多个热键来触发我的程序中的事件 我从 AaronLS 在这个问题中的出色回答中找到了灵感 使用C 设置全局热键 https stackoverflow com a 27309185 3064934 如果
  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • DataGridView 捕获用户行选择

    我在处理选择时遇到问题DataGridView 我的网格视图包含一个金额列 表单上有一个文本框 应显示所选网格视图行的总数 因此 我需要在用户选择 取消选择 gridview 行时捕获事件并相应地计算 添加 减去 金额 我找到了两种方法 使

随机推荐

  • valarrays 出现奇怪的 C++ 编译错误

    我在 C 中使用 valarrays 时遇到奇怪的编译错误 这是我的代码的精简版本 include
  • Spring MVC 既不是 BindingResult 也不是普通目标

    java lang IllegalStateException BindingResult 和 bean 名称 user 的普通目标对象都不能作为请求属性 所以当我尝试运行此网页时出现此错误 但我不知道为什么 我看到并阅读了很多有关此错误的
  • 检测是否有其他应用程序正在请求麦克风

    我在 SO 上看到了多个问题 这些问题说不可能看到另一个应用程序何时想要使用麦克风 当其他应用程序在 Android 中使用麦克风时 无法访问麦克风 https stackoverflow com questions 24170124 un
  • 如何修复 Android 上 Spongy Castle 的错误:找不到类 java.awt.datatransfer.DataFlavor

    我使用 lib Spongy Castle 在 Android 上对邮件进行签名和加密这个例子 https github com rtyley spongycastle blob spongy master scmail jdk15on s
  • 当多个用户从 asp 会员身份登录时,如何将用户名放入 sql 触发器中

    我正在尝试记录对数据库的所有更改 但无法找到将当前用户名获取到触发器的方法 我有triggerData存储用户信息的表 guid userid data username logintime 这些是在用户登录时插入的 这是触发器 decla
  • Apache HttpClient 添加字节范围标头?

    有谁知道如何在 HTTP 请求中请求字节范围 我希望通过请求下载停止位置的字节范围并从 getContent 读取其 InputStream 来促进应用程序中下载的恢复 我尝试迭代标题 但它们为空 来源如下 import java io I
  • 如何引用现有GeoJSON leaflet对象的数据?

    我们有一个 Leaflet Map 我们正在尝试使用 GeoJSON 构建它 我们的数据来自实时流 因此我们首先使用空数据初始化 GeoJSON var myLayer L geoJson style function feature va
  • 在 Aurelia 中,槽可以用于重复绑定吗?

    我想创建一个循环遍历数组并将其应用于数组中的每个项目的自定义元素 例如 自定义元素的视图模板将包含类似以下内容的内容 div div div div
  • 在 SSL 证书主题字段中添加 ID

    我想知道是否有一种简单的方法可以在创建 SSL 证书时自动生成 全局 唯一 ID 并将其添加到主题字段中 查看 OpenSSL bash 命令 示例将会很有帮助 something along the lines of this 首先 主题
  • 在 Jersey 1.18.1 请求过滤器中获取资源注释

    我正在实现一个用户授权模块 该模块将使用 新 注释应用于资源方法 为此 我创建了一个 Jersey 请求 过滤器 我需要在其中获取注释以允许 禁止资源操作 我正在使用 Dropwizard 0 7 1 和 Jersey 1 18 1 资源类
  • 如何在 UNIX 中创建新的环境变量......?

    如何在unix中创建新的环境变量并在程序中使用它 你可以知道你正在运行什么 shellps o comm p 我认为这或多或少是普遍的 所以 在 bash 和某些类似的 shell 中 如果您想为一次特定运行创建变量 您可以这样做 MYVA
  • 如何构建我的 Express 应用程序,只需要打开 mongodb 连接一次?

    注意 请在回答之前阅读这篇文章的编辑部分 它可能会节省您的时间并回答我的问题之一 我遇到的问题非常简单 但我对整体来说还很陌生 并且在弄清楚如何在节点 express 应用程序中正确实现 mongodb 数据库连接时遇到问题 我正在使用 E
  • 管道缓冲区保留直到处理完成

    我正在研究使用管道处理来自网络的二进制消息的可能性 我将处理的二进制消息带有有效负载 并且希望将有效负载保持为二进制形式 这个想法是读出整个消息并创建一个消息片及其有效负载 一旦消息被完全读取 它将被传递到通道链进行处理 处理不会是即时的
  • 在 rgdal R 中使用 spTransform 重新投影空间点时出错

    G day 我在 CRS 澳大利亚大地基准 66 84 为了简洁起见 AGD66 中有大量经 纬度坐标 我想将这些坐标从 AGD66 更改为 WGS84 因为它们之间大约有 200m 的差异 而且我在 WGS84 中有其他坐标和图层 我尝试
  • PHP 计算对象属性出现次数

    我有一个如下所示的 PHP 对象 我想知道获取属性 typeId 3 的对象计数的最简单方法是什么 Array 0 gt ABC Object id gt 13 typeId gt 3 sortOrder gt 0 1 gt ABC Obj
  • 在python中添加atom中的模块

    我的计算机上安装了 pygame 和 tkinter 模块 但我无法找到如何在文本编辑器 Atom 中访问它们 我可以在 IDLE 中使用它们 import pygame 但是当我尝试将其导入atom 时 它无法识别该模块 有人知道为什么吗
  • Firefox 是否支持表格元素上的position:relative?

    当我尝试使用时position relative position absolute on a th or td 在 Firefox 中它似乎不起作用 简单且最正确的方法是将单元格的内容包装在 div 中并添加相对于该 div 的位置 ex
  • .net core razor 页面中的多个视图组件未正确绑定

    我正在使用 razor 页面创建一个 net core 5 Web 应用程序 并且正在努力将我创建的视图组件绑定到我的页面 如果我在页面上有多个相同的视图组件 以下完美运行 我的页面 cshtml page model MyPageMode
  • 多个邮件附件 - PhoneGap

    您好 我正在phonegap中做一个应用程序 它需要有多个附件 但我无法有多个附件 任何解决方案 我的代码如下
  • 使用单个函数调用写入多个文件描述符

    我有一个群聊服务器的用例 其中服务器必须向所有客户端的套接字写入一个公共字符串 然后 我通过循环遍历文件描述符列表并将字符串写入每个文件描述符来解决这个问题 现在我正在考虑寻找更好的解决方案 是否可以通过使用 Linux 中的 tee 系统