C++ 我是否可以使用非阻塞套接字将FD从一个进程发送到另一个进程;sendmsg/recvmsg";?
我需要创建一个通过Unix套接字连接的客户机-服务器模型。我的客户端将请求服务器打开一个只有服务器有权限的文件。服务器将打开文件并使用“sendmsg”API发送FD,客户端将使用“recvmsg”接收FD。现在我的问题是,我可以使用非阻塞套接字实现这一点吗? 如果可能,我如何知道客户端消息的长度 请给我指出一些相同的非阻塞实现 相关:所以我的答案不完整 您应该使用在FD和套接字之间传输文件 如果套接字是非阻塞的,那么sendfile(或send或sendmsg)调用可能会返回一个值,指示已完成的部分金额。使用select()或poll()可以获得关于何时可以再次发送的通知(在上次发送停止时从文件描述符中的上一点拾取)C++ 我是否可以使用非阻塞套接字将FD从一个进程发送到另一个进程;sendmsg/recvmsg";?,c++,linux,sockets,ipc,file-descriptor,C++,Linux,Sockets,Ipc,File Descriptor,我需要创建一个通过Unix套接字连接的客户机-服务器模型。我的客户端将请求服务器打开一个只有服务器有权限的文件。服务器将打开文件并使用“sendmsg”API发送FD,客户端将使用“recvmsg”接收FD。现在我的问题是,我可以使用非阻塞套接字实现这一点吗? 如果可能,我如何知道客户端消息的长度 请给我指出一些相同的非阻塞实现 相关:所以我的答案不完整 您应该使用在FD和套接字之间传输文件 如果套接字是非阻塞的,那么sendfile(或send或sendmsg)调用可能会返回一个值,指示已完成
至于文件长度,您必须自己将其添加到请求/响应协议中。(例如,在服务器上调用stat(),发送文件长度,然后发送文件本身)。套接字的阻塞状态与此无关。对于实际的描述符传输,我建议谷歌搜索“通过unix域套接字发送文件描述符”之类的术语。此外,请复制: