- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有一个multiplayer card game我首先在 C 中将其编程为非 fork 套接字服务器(使用 poll() 调用)。
然后添加新功能对我来说太困难了,我已经切换到 Perl(使用 IO::Poll 模块)。
由于 Perl 不支持 readv()/writev(),需要更多的内存/CPU,而且不是很商业化(我想稍后出售我的游戏),我想将我的服务器移植回 future 的 C++——一旦我的功能稳定下来。 (这次是 C++,因为我的服务器中的对象很少)。
谁能给我一个例子,如何在 C++ 下使用 readv()、writev() 和 poll() 或 select()? 我知道如何在 Perl 和 C 下使用它们,但我还没有找到任何 C++ 示例。
我的环境:我正在使用 OpenBSD 及其 gcc/g++,我希望我的服务器也能在 Linux 下运行。我不想使用任何不寻常的库(比如 libevent?),除非它们也能在 Windows 下工作——因为也许将来我也想将我的服务器移植到 Windows(为此我想我必须从 poll 切换回来() 到 select() 并添加几个 Winsock 函数?)。
请让我补充一下,我喜欢 Perl 和 C,我非常尊重 C++,所以这个问题不是关于哪种语言或操作系统更好。我的问题是:如何在 C++ 中使用 poll()
谢谢!亚历克斯
最佳答案
函数 readv()
、writev()
和 poll()
在 C++ 中的工作方式与在 C 中的工作方式相同。
关于c++ - 在 C++ 中使用 readv()、writev() 和 poll(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2208246/
这是man writev说: The data transfers performed by readv() and writev() are atomic: the data written by
我正在研究 writev 和 readv,当我显示内存内容时,我得到了奇怪的数据: struct iovec *iov = malloc(sizeof(struct iovec) * 3); iov[
我尝试将 writev 与 direct IO 结合起来。但是当我和他们结合时,我失败了。 下面的代码有效,但如果我在 open() 时添加 O_DIRECT 则失败 失败时我总是得到“无效参数”。
#include #include #include #include int main(int argc, char *argv[]) { int fd; fd=open(a
我已经阅读了 writev 的手册页并发现 ERRORS 部分指出 EINVAL ... the vector count iovcnt is less than zero or greater th
假设我通过TCP套接字连接到客户端,并在套接字上调用writev并包含3个项目,说“从地址A写入16个字节,从地址B写入32个字节,再从地址A写入16个字节”。 是将完整的64字节消息组装在我的机器的
希望你能帮帮我。 我正在尝试通过 TCP/IP 通过网络发送 1000 位的数据包,我希望也能够在 Cygwin 和 Windows 中使用重叠 I/O 技术。 在 Cygwin 中,我尝试使用“re
我有很多 send(fd, buf, len, MSG_DONTWAIT | MSG_NOSIGNAL) 我想合并成一个 writev(fd, iov, iovcnt) 但是,writev 无法识别
writev 函数接受一个 struct iovec 数组作为输入参数 writev(int fd, const struct iovec *iov, int iovcnt); 输入是需要写入文件(比
我在 Docker 容器中为我的项目使用 React、React-Redux 和 Webpack,但一直遇到这个错误 internal/stream_base_commons.js:59 var er
是否有适用于 char * bufs 而不是文件描述符的 readv/writev 等效项? 例如,如果我有一个 char * buf[] 数组,并且我想将其全部复制到一个 char buf * 中。
有一个multiplayer card game我首先在 C 中将其编程为非 fork 套接字服务器(使用 poll() 调用)。 然后添加新功能对我来说太困难了,我已经切换到 Perl(使用 IO:
我正在运行旧的 Angular 应用程序:[angular/cli-1.4.5,node:10.13.0 and windows: win32 x64]。当我为我的应用程序提供服务时,它编译成功,但是
在 scatter 和 gather(即 readv 和 writev)中,Linux 读取多个缓冲区并从多个缓冲区。 如果说,我有一个包含 3 个缓冲区的向量,我可以使用 readv,或者我可以使用
我只是想使用 readv() 从文件中获取一些数据。但是总是打印垃圾字符。我试图为 iovec.iov_base 分配空间,但没有运气。我什至想到了为什么要使用 readv 函数而不是坚持使用更简单和
我有一个与 USB 交互的程序,我想知道以下写入命令告诉我什么。我知道 writev iovec 结构由数据数组指针和长度组成,但是 "@\10\335\320\2w\4\240K\252\0\7"
我是一名优秀的程序员,十分优秀!