Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more

In Files

  • fcntl/fcntl.c

Class/Module Index [+]



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.

Copyright (C) 1997-2001 Yukihiro Matsumoto

Documented by mathew <meta@pobox.com>


To perform a fcntl(2) operation, use IO::fcntl in the core classes.

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

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

The constants supported by Ruby for use with IO::fcntl are:

  • F_DUPFD - duplicate a close-on-exec file handle to a non-close-on-exec file handle.

  • F_GETFD - read the close-on-exec flag of a file handle.

  • F_SETFD - set the close-on-exec flag of a file handle.

  • FD_CLOEXEC - the value of the close-on-exec flag.

  • F_GETFL - get file descriptor flags.

  • F_SETFL - set file descriptor flags.

  • O_APPEND, O_NONBLOCK, etc (see below) - file descriptor flag values for the above.

  • F_GETLK - determine whether a given region of a file is locked.

  • F_SETLK - acquire a lock on a region of a file.

  • F_SETLKW - acquire a lock on a region of a file, waiting if necessary.

  • F_RDLCK, F_WRLCK, F_UNLCK - types of lock for the above.

The constants supported by Ruby for use with IO::sysopen are:


require 'fcntl'

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

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.