sendmsg返回错误空间不可用

时间:2012-11-26 07:08:07

标签: sockets

我有两个过程 - 父母和孩子。父级建立套接字对,它作为fork的一部分传递给子级。 然后父节点接受连接并传递每个新的套接字fd以供子进程处理。这是通过sendmsg完成的。当传入连接的速率大约为每秒10时,这种方法很好。但是,在它增加到每秒200之后,我继续收到消息sendmsg:没有可用的缓冲区空间。 这可能是什么原因?我应该检查什么?

这是我到目前为止的想法: 我想知道是否像其他套接字调用,当孩子做recvmsg时,它应该从socketpair缓冲区中删除

1 个答案:

答案 0 :(得分:1)

最可能的原因是你的子进程没有足够快地从套接字中读取,所以父进程溢出内核缓冲区,但很难说没有看到代码。

您是否考虑过在一个cmsg(3)中发送多个文件描述符?