本文簡要介紹ruby語言中 UNIXServer.accept_nonblock
的用法。
用法
accept_nonblock([options]) → unixsocket
在為底層文件說明符設置 O_NONBLOCK 後,使用 accept(2) 接受傳入連接。它為傳入連接返回一個接受的 UNIXSocket
。
示例
require 'socket'
serv = UNIXServer.new("/tmp/sock")
begin # emulate blocking accept
sock = serv.accept_nonblock
rescue IO::WaitReadable, Errno::EINTR
IO.select([serv])
retry
end
# sock is an accepted socket.
如果對 UNIXServer#accept_nonblock
的調用失敗,請參閱 Socket#accept
以了解可能引發的異常。
UNIXServer#accept_nonblock
可能引發與accept(2) 失敗相對應的任何錯誤,包括Errno::EWOULDBLOCK。
如果異常是 Errno::EWOULDBLOCK、Errno::EAGAIN、Errno::ECONNABORTED 或 Errno::EPROTO,則通過 IO::WaitReadable
對其進行擴展。所以 IO::WaitReadable
可以用來挽救重試accept_nonblock的異常。
通過將關鍵字參數 exception
指定為 false
,您可以指示 accept_nonblock
不應引發 IO::WaitReadable
異常,而是返回符號 :wait_readable
。
參看
相關用法
- Ruby UNIXServer.accept用法及代碼示例
- Ruby UNIXServer.new用法及代碼示例
- Ruby UNIXServer.listen用法及代碼示例
- Ruby UNIXServer.sysaccept用法及代碼示例
- Ruby UNIXSocket.new用法及代碼示例
- Ruby UNIXSocket.addr用法及代碼示例
- Ruby UNIXSocket.recv_io用法及代碼示例
- Ruby UNIXSocket.recvfrom用法及代碼示例
- Ruby UNIXSocket.peeraddr用法及代碼示例
- Ruby UNIXSocket.send_io用法及代碼示例
- Ruby UNIXSocket.pair用法及代碼示例
- Ruby UNIXSocket.path用法及代碼示例
- Ruby UndefinedConversionError.source_encoding用法及代碼示例
- Ruby UnboundMethod.original_name用法及代碼示例
- Ruby URI.parse用法及代碼示例
- Ruby UID.change_privilege用法及代碼示例
- Ruby Util.unescape用法及代碼示例
- Ruby Util.url_encode用法及代碼示例
- Ruby UnboundMethod.bind用法及代碼示例
- Ruby URI模塊用法及代碼示例
- Ruby UID.euid用法及代碼示例
- Ruby UncaughtThrowError類用法及代碼示例
- Ruby Util.pretty用法及代碼示例
- Ruby UID.uid用法及代碼示例
- Ruby UnwindDetails.all_requirements用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 UNIXServer.accept_nonblock。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。