如何按编号关闭文件?

时间:2014-12-04 01:46:25

标签: ruby

例如:

i = 3
close(i)

假设3是一个打开的文件描述符。

1 个答案:

答案 0 :(得分:2)

您需要IO个对象才能在其上调用IO#close

io = IO.for_fd(3)
# Actually, `for_fd` is just an alias for `new`, but it reads nice here

io.close

# or simply
IO.for_fd(3).close

事实上,即使只是说

IO.for_fd(3)

没有调用close可能就足够了,因为我们没有将返回的IO分配给任何变量,它有资格进行垃圾收集,最终可能会在某个未指定的时间收集垃圾。未来和终结者将close它......但依赖于它是一个非常糟糕的主意,因为你不知道何时该对象将被垃圾收集。如果程序永远不会耗尽内存,实际上根本无法收集它。