这个问题不是关于什么
此问题与如何使用File#close或File#open块语法自动关闭文件无关。这是一个关于Ruby在运行时将其打开的文件描述符列表存储在哪里的问题。
实际的问题
如果您有一个具有打开描述符的程序,但您不能访问相关的File或IO对象,那么如何找到对当前打开的文件描述符的引用?举个例子:
filename='/tmp/foo'
%x( touch "#{filename}" )
File.open(filename)
filehandle = File.open(filename)
将打开第一个File实例,但对该对象的引用未存储在变量中。第二个实例存储在文件句柄中,我可以使用#inspect或#close轻松地访问它。
但是,被丢弃的File对象并没有消失;它只是无法以任何明显的方式访问。在对象最终确定之前,Ruby必须跟踪它somewhere...but在哪里?
https://stackoverflow.com/questions/10922045
复制相似问题