Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我是否可以使用非阻塞套接字将FD从一个进程发送到另一个进程;sendmsg/recvmsg";?_C++_Linux_Sockets_Ipc_File Descriptor - Fatal编程技术网

C++ 我是否可以使用非阻塞套接字将FD从一个进程发送到另一个进程;sendmsg/recvmsg";?

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)调用可能会返回一个值,指示已完成

我需要创建一个通过Unix套接字连接的客户机-服务器模型。我的客户端将请求服务器打开一个只有服务器有权限的文件。服务器将打开文件并使用“sendmsg”API发送FD,客户端将使用“recvmsg”接收FD。现在我的问题是,我可以使用非阻塞套接字实现这一点吗? 如果可能,我如何知道客户端消息的长度

请给我指出一些相同的非阻塞实现

相关:所以我的答案不完整

您应该使用在FD和套接字之间传输文件

如果套接字是非阻塞的,那么sendfile(或send或sendmsg)调用可能会返回一个值,指示已完成的部分金额。使用select()或poll()可以获得关于何时可以再次发送的通知(在上次发送停止时从文件描述符中的上一点拾取)


至于文件长度,您必须自己将其添加到请求/响应协议中。(例如,在服务器上调用stat(),发送文件长度,然后发送文件本身)。

套接字的阻塞状态与此无关。对于实际的描述符传输,我建议谷歌搜索“通过unix域套接字发送文件描述符”之类的术语。此外,请复制: