¿Dónde realiza un seguimiento Ruby de sus descriptores de archivos abiertos?

Qué es esta preguntaNo Acerca de

Esta pregunta esno acerca de cómo cerrar automáticamente un archivo con Archivo # cerrado o la sintaxis de bloque de Abrir archivo #. Es una pregunta acerca de dónde Ruby almacena su lista de descriptores de archivos abiertos en tiempo de ejecución.

La pregunta actual

Si tiene un programa con descriptores abiertos, pero no tiene acceso al objeto Archivo o IO relacionado, ¿cómo puede encontrar una referencia a los descriptores de archivos abiertos actualmente? Tomemos este ejemplo:

filename='/tmp/foo'
%x( touch "#{filename}" )
File.open(filename)
filehandle = File.open(filename)

La primera instancia de archivo se abre, pero la referencia al objeto no se almacena en una variable. La segunda instancia se almacena enmanejador de archivos, donde puedo acceder fácilmente con #inspect o #close.

Sin embargo, el objeto File descartado no se ha ido; Simplemente no es accesible de ninguna manera obvia. Hasta que se finalice el objeto, Ruby debe seguirlo en algún lugar ... ¿pero dónde?

Respuestas a la pregunta(1)

Su respuesta a la pregunta