我正在编写一个程序,通过域套接字在使用sendmsg
和recvmsg
的两个进程之间传递文件描述符。为了发送文件描述符,额外的数据包含在msghdr.msg_iov
和msghdr.msg_iolen
中。然而,我被告知,与普通的read
和write
系统调用类似,sendmsg
和recvmsg
也存在部分读/写问题。在这种情况下,辅助字段中的数据是否会为每个部分数据自动复制?我之所以这样问,是因为我的实现需要非阻塞机制。让我用下面的例子来更详细地说明一下
发送方:发送辅助字段为fd
,msg_iov
为K
字节的msghdr
数据
接收方:(1)部分读取,K1
字节(2)部分读取,K-K1
字节
现在作为上面的例子,我实际上应该在所有数据到达的步骤(2)之后处理数据。在这种情况下,我仍然可以从辅助字段中正确提取fd
吗?或者它只出现在第一次部分读取中?
https://stackoverflow.com/questions/38431713
复制相似问题