Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > IOクラス > write_nonblock

instance method IO#write_nonblock

write_nonblock(string, exception: true) -> Integer | :wait_writable[permalink][rdoc]

IO をノンブロッキングモードに設定し、string を write(2) システムコールで書き出します。

write(2) が成功した場合、書き込んだ長さを返します。 EAGAIN, EINTR などは例外 Errno::EXXX として呼出元に報告されます。

書き込んだバイト数(つまり返り値)は String#bytesize の 値より小さい可能性があります。

発生した例外 がErrno::EAGAIN、 Errno::EWOULDBLOCK である場合は、 その例外オブジェクトに IO::WaitWritableObject#extend されます。よって IO::WaitWritable を write_nonblock のリトライが必要 かの判定に用いることができます。

[PARAM] string:
自身に書き込みたい文字列を指定します。
[PARAM] exception:
false を指定すると、書き込み時に Errno::EAGAINErrno::EWOULDBLOCK が発生 する代わりに :wait_writable を返します。
[EXCEPTION] IOError:
自身が書き込み用にオープンされていなければ発生します。
[EXCEPTION] Errno::EXXX:
write(2) が失敗した場合に発生します。