首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中停止文件描述符溢出

如何在C++中停止文件描述符溢出
EN

Stack Overflow用户
提问于 2011-03-04 10:05:18
回答 2查看 218关注 0票数 0

我正在向一个88kb的文件描述符中写入一条消息。在我的linux系统上,文件描述符只能保存64kb。一旦数据被放入文件描述符中,它就会被读取并通过管道传输到tcp连接中。

如何知道是否可以向文件描述符写入更多数据,这意味着文件描述符为空?我需要一个函数来阻塞,直到文件描述符为空,或者至少可以返回一个值,让我知道如何安全地将数据写入文件描述符。

EN

回答 2

Stack Overflow用户

发布于 2011-03-04 10:12:08

我认为select()可能就是您想要的。通过正确的参数,您可以安排它阻塞,直到您的文件描述符为您的I/O操作做好准备。

然而,你的问题用词有点奇怪,因为我们通常不会将文件描述符称为具有容量或“空”。这听起来像是在谈论表示管道的一个端点的文件描述符,而管道(而不是文件描述符)的容量是64KB。

票数 1
EN

Stack Overflow用户

发布于 2011-03-04 10:29:34

在我看来,OP更像是试图发送大于配置的最大数据包大小的数据报(AF_UNIX或AF_INET/UDP)。其他可能是管道和FIFO,它们具有最大的原子写入大小;这里的修复方法是执行多次写入,连续的写入将阻塞,直到管道/FIFO中有足够的空间为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5188895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档