Skip to content
Additional methods for the IO class on Unix platforms
C Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


= Description
  The io-extra library provides a few extra IO methods that you may find
  handy. They are IO.closefrom, IO.fdwalk, IO#directio? and IO#directio=.
  This library is not supported on MS Windows.

  Support for OS X is limited. See the documentation for details.

= Installation
  gem install io-extra

= Synopsis
  require 'io/extra'

  # Close all file descriptors from 3 up.

  # Inspect all the open handles
  IO.fdwalk(0){ |handle|
    puts "=" * 40 
    p handle
    p handle.fileno

= Developer's Notes
  You might be wondering what the difference is between my implementation of
  IO.closefrom and a pure Ruby version that looks something like this:

  def IO.closefrom(n)
    0.upto(n) do |fd|

  The primary difference is that this walks all file descriptors, rather
  than only open file descriptors. However, I should note that this only
  applies if your platform supports the closefrom() function. In that case,
  the only advantage is speed.

  You might also be wondering what the difference is between my implementation
  of IO.fdwalk and a pure Ruby version that looks something like this:

   def IO.fdwalk(n)
      ObjectSpace.each_object(File){ |f|
         yield f if f.fileno >= n

  The primary difference is that this only closes Ruby file objects, not
  necessarily every file handle opened by the Ruby process. For example, handles
  opened via system() calls.

= Note to OS X Users
  The OS X platform does not support closefrom(), fdwalk() or directio(). The
  hand-crafted IO.closefrom function will not work because the getrlimit()
  function on OS X does not work. Patches welcome.

= Documentation
  For further documentation, see the io_extra.txt file or the inline
  documentation that was generated by RDoc (if you did a gem install).

= Known Issues
  None that I'm aware of (beyond those documented above). Please file any bug
  reports on the project page at

= Future Plans
  * I may add the File::O_DIRECT open constant on platforms that support it.
  * Switch from C extension to FFI.

= Acknowledgements
  Eric Wong for some great work on Linux compatibility and other fixes.
= License
  Artistic 2.0

= Copyright
  (C) 2003-2010 Daniel J. Berger
  All Rights Reserved
= Warranty
  This package is provided "as is" and without any express or
  implied warranties, including, without limitation, the implied
  warranties of merchantability and fitness for a particular purpose.
= Author
  Daniel J. Berger
Something went wrong with that request. Please try again.