Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > socketライブラリ > UNIXServerクラス > accept_nonblock
accept_nonblock -> UnixSocket[permalink][rdoc]ソケットをノンブロッキングモードに設定した後、 accept(2) を呼び出します。
接続した UNIXSocket のインスタンスを返します。
accept(2) がエラーになった場合、Socket#accept と同じ例外が 発生します。
Errno::EWOULDBLOCK, Errno::EAGAIN, Errno::ECONNABORTED, Errno::EPROTO のいずれかの例外が 発生した場合は、その例外には IO::WaitReadable が extend されます。それを利用してリトライ可能な例外を掴まえることができます。
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.
[SEE_ALSO] UNIXServer#accept