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

instance method IO#fcntl

fcntl(cmd, arg = 0) -> Integer[permalink][rdoc]

IOに対してシステムコール fcntl を実行します。機能の詳細は fcntl(2) を参照してください。 fcntl(2) が返した整数を返します。

[PARAM] cmd:
IO に対するコマンドを、添付ライブラリ fcntl が提供している定数で指定します。
[PARAM] arg:
cmd に対する引数を整数、文字列、booleanのいずれかで指定します。整数の時にはその値を fcntl(2) に渡します。文字列の場合には Array#pack した構造体だとみなして渡します。 arg が nil か false の場合には 0を、true の場合には 1 を渡します。
[EXCEPTION] Errno::EXXX:
fcntl の実行に失敗した場合に発生します。
[EXCEPTION] IOError:
既に close されている場合に発生します。


require "fcntl"

IO.write("testfile", "abcde")
# ファイル状態フラグを読み出す
File.open("testfile") do |f|
  f.fcntl(Fcntl::F_GETFL, 0) # => 0
  f.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK) # => 0
  f.fcntl(Fcntl::F_GETFL, 0) # => 4
end