当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby AncillaryData.unix_rights用法及代码示例


本文简要介绍ruby语言中 Socket::AncillaryData.unix_rights 的用法。

用法

unix_rights → array-of-IOs or nil

返回 UNIX 域套接字中SCM_RIGHTS 控制消息的 IO 对象数组。

数组中 IO 对象的类是 IO Socket

该数组在实例化时附加到ancillarydata。例如, BasicSocket#recvmsg 在收到 SCM_RIGHTS 控制消息并给出 :scm_rights=>true 选项时附加数组。

# recvmsg needs :scm_rights=>true for unix_rights
s1, s2 = UNIXSocket.pair
p s1                                         #=> #<UNIXSocket:fd 3>
s1.sendmsg "stdin and a socket", 0, nil, Socket::AncillaryData.unix_rights(STDIN, s1)
_, _, _, ctl = s2.recvmsg(:scm_rights=>true)
p ctl                                        #=> #<Socket::AncillaryData: UNIX SOCKET RIGHTS 6 7>
p ctl.unix_rights                            #=> [#<IO:fd 6>, #<Socket:fd 7>]
p File.identical?(STDIN, ctl.unix_rights[0]) #=> true
p File.identical?(s1, ctl.unix_rights[1])    #=> true

# If :scm_rights=>true is not given, unix_rights returns nil
s1, s2 = UNIXSocket.pair
s1.sendmsg "stdin and a socket", 0, nil, Socket::AncillaryData.unix_rights(STDIN, s1)
_, _, _, ctl = s2.recvmsg
p ctl #=> #<Socket::AncillaryData: UNIX SOCKET RIGHTS 6 7>
p ctl.unix_rights #=> nil

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 AncillaryData.unix_rights。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。