# module Fcntl

`Fcntl` loads the constants defined in the system’s <fcntl.h> 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 = IO.open(fd)
    f.syswrite("TEMP DATA")
    f.close

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)

### Constants

FD_CLOEXEC

  `FD_CLOEXEC`

  the value of the close-on-exec flag.

F_DUP2FD

  `F_DUP2FD`

  It is a FreeBSD specific constant and equivalent to dup2 call.

F_DUP2FD_CLOEXEC

  `F_DUP2FD_CLOEXEC`

  It is a FreeBSD specific constant and acts similarly as `F_DUP2FD` but set the `FD_CLOEXEC` flag in addition.

F_DUPFD

  `F_DUPFD`

  Duplicate a file descriptor to the minimum unused file descriptor greater than or equal to the argument.

  The close-on-exec flag of the duplicated file descriptor is set. (Ruby uses F_DUPFD_CLOEXEC internally if available to avoid race condition. `F_SETFD` is used if F_DUPFD_CLOEXEC is not available.)

F_GETFD

  `F_GETFD`

  Read the close-on-exec flag of a file descriptor.

F_GETFL

  `F_GETFL`

  Get the file descriptor flags. This will be one or more of the O_* flags.

F_GETLK

  `F_GETLK`

  Determine whether a given region of a file is locked. This uses one of the F_*LK flags.

F_GETPIPE_SZ

  `F_GETPIPE_SZ`

  Return (as the function result) the capacity of the pipe referred to by fd.

F_RDLCK

  `F_RDLCK`

  Read lock for a region of a file

F_SETFD

  `F_SETFD`

  `Set` the close-on-exec flag of a file descriptor.

F_SETFL

  `F_SETFL`

  `Set` the file descriptor flags. This will be one or more of the O_* flags.

F_SETLK

  `F_SETLK`

  Acquire a lock on a region of a file. This uses one of the F_*LCK flags.

F_SETLKW

  `F_SETLKW`

  Acquire a lock on a region of a file, waiting if necessary. This uses one of the F_*LCK flags

F_SETPIPE_SZ

  `F_SETPIPE_SZ`

  Change the capacity of the pipe referred to by fd to be at least arg bytes.

F_UNLCK

  `F_UNLCK`

  Remove lock for a region of a file

F_WRLCK

  `F_WRLCK`

  Write lock for a region of a file

O_ACCMODE

  `O_ACCMODE`

  Mask to extract the read/write flags

O_APPEND

  `O_APPEND`

  Open the file in append mode

O_CREAT

  `O_CREAT`

  Create the file if it doesn’t exist

O_EXCL

  `O_EXCL`

  Used with `O_CREAT`, fail if the file exists

O_NDELAY

  `O_NDELAY`

  Open the file in non-blocking mode

O_NOCTTY

  `O_NOCTTY`

  Open TTY without it becoming the controlling TTY

O_NONBLOCK

  `O_NONBLOCK`

  Open the file in non-blocking mode

O_RDONLY

  `O_RDONLY`

  Open the file in read-only mode

O_RDWR

  `O_RDWR`

  Open the file in read-write mode

O_TRUNC

  `O_TRUNC`

  Truncate the file on open

O_WRONLY

  `O_WRONLY`

  Open the file in write-only mode.