zx_socket_share


英文原文快照


socket_share —— 通过socket发送另一个socket对象

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_socket_share(zx_handle_t socket, zx_handle_t socket_to_send);

描述

socket_share() 尝试通过现有socket连接发送新socket。当可发送socket时,信号ZX_SOCKET_SHARE被置位。

发送成功时,socket_to_send被放入socket的共享队列中,并且调用者的进程不可再访问它。如果发生任何错误,socket_to_send将被丢弃(而非被传输)。

权限

TODO(ZX-2399)

返回值

socket_share() 执行成功则返回ZX_OK。如果调用失败,则返回下列错误码之一。

错误码

ZX_ERR_BAD_HANDLEsocketsocket_to_send是无效句柄。

ZX_ERR_WRONG_TYPEsocketsocket_to_send不是socket类型句柄。

ZX_ERR_ACCESS_DENIEDsocket缺少ZX_RIGHT_WRITE权限,或socket_to_send缺少ZX_RIGHT_TRANSFER权限。

ZX_ERR_BAD_STATE: 下列情况之一:socket_to_sendsocket是相同的socket句柄;socket_to_sendsocket的是相同的socket句柄;socket_to_send本身能够共享。

ZX_ERR_SHOULD_WAIT:共享队列中已有socket。

ZX_ERR_NOT_SUPPORTED:此socket不支持传输其他socket,即它不是使用ZX_SOCKET_HAS_ACCEPT标志位创建的。

ZX_ERR_PEER_CLOSED:socket的相对端点已关闭。

限制

socket的共享队列深度仅为1。

另见

socket_acceptsocket_createsocket_readsocket_write