[英]Can I use non-blocking sockets to send FDs from one process to another using “sendmsg/recvmsg”?
我需要创建一个通过Unix套接字连接的客户端-服务器模型。 我的客户端将请求服务器打开一个文件,只有该服务器具有该权限。 服务器将打开文件并使用“ sendmsg” API发送FD,而客户端将使用“ recvmsg”接收FD。 现在我的问题是我可以使用非阻塞套接字实现此目的吗? 另外,如果有可能,我如何知道客户端的消息长度?
请指出一些相同的非阻塞实现。
您应该使用sendfile在FD和套接字之间传输文件。
如果套接字是非阻塞的,则sendfile(或send或sendmsg)调用可能会返回一个值,该值指示已完成的部分金额。 使用select()或poll()来通知何时可以再次发送(在上一次发送停止时从文件描述符中的上一个点开始拾取)。
至于文件长度,您必须自己将其添加到您的请求/响应协议中。 (例如,调用服务器上的stat(),发送文件长度,然后发送文件本身)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.