Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > socketライブラリ > UNIXServerクラス > accept_nonblock

instance method 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