Hi all, I'm happy to announce the release of io-extra 0.1.0. What is it? =========== This package provides a few extra methods for the IO class: IO.closefrom(low_fd) - Closes all open file descriptors greater than or equal to 'low_fd'. IO.fdwalk(low_fd) - Iterates over each open file descriptor and yields back a File object. IO#directio? - Returns true or false, depending on whether or not directio has been set for the filehandle. IO#directio= - Allows you to set directio for the filehandle (for those platforms that support it). Where is it? ============ It can be found on the RAA or on the project page at http://ruby-miscutils.sf.net. Eh? Is this really necessary? ============================== Q) What is the difference between your implementation of IO.closefrom and a pure Ruby version that looks something like this? def IO.closefrom(n) 0.upto n do |fd| IO.for_fd(fd).close end end 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. Q) What is the difference between your 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 } end The primary difference is that this only closes Ruby file objects, not necessarily every filehandle opened by the Ruby process. Think system(), for example. Enjoy! Dan