當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。