require 'fcntl'


Fcntl loads the constants defined in the system’s C header file, and used with both the fcntl(2) and open(2) POSIX system calls.

To perform a fcntl(2) operation, use IO::fcntl.

To perform an open(2) operation, use IO::sysopen.

The set of operations and constants available depends upon specific operating system. Some values listed below may not be supported on your system.

See your fcntl(2) man page for complete details.

Open /tmp/tempfile as a write-only file that is created if it doesn’t exist:

require 'fcntl'

fd = IO.sysopen('/tmp/tempfile',
                Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT)
f =
f.syswrite("TEMP DATA")

Get the flags on file s:

m = s.fcntl(Fcntl::F_GETFL, 0)

Set the non-blocking flag on f in addition to the existing flags in m.

f.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK|m)

Fcntl Reference