File io 发生错误时io.lines(文件名)是否关闭了文件?
如果循环中发生错误,通过io.lines打开文件句柄会发生什么?文档中说,当到达文件末尾时,该文件将自动关闭,对于异常情况(比如在dosomething()中接受nil值)没有说明File io 发生错误时io.lines(文件名)是否关闭了文件?,file-io,lua,File Io,Lua,如果循环中发生错误,通过io.lines打开文件句柄会发生什么?文档中说,当到达文件末尾时,该文件将自动关闭,对于异常情况(比如在dosomething()中接受nil值)没有说明 有人知道lua将如何处理这种情况吗?当引用它的对象最终被垃圾收集时,该文件将被关闭 如果您使用的是Unix系统,则可以使用以下程序进行尝试: local f = function() for line in io.lines("myfile.txt") do print("1")
有人知道lua将如何处理这种情况吗?当引用它的对象最终被垃圾收集时,该文件将被关闭 如果您使用的是Unix系统,则可以使用以下程序进行尝试:
local f = function()
for line in io.lines("myfile.txt") do
print("1")
io.read()
error(line)
end
end
pcall(f)
print("2")
io.read()
collectgarbage("collect")
print("3")
io.read()
如果在步骤1运行lsof
,您将看到文件已打开。在步骤2,它很可能仍处于打开状态。在步骤3,它将不再打开
local f = function()
for line in io.lines("myfile.txt") do
print("1")
io.read()
error(line)
end
end
pcall(f)
print("2")
io.read()
collectgarbage("collect")
print("3")
io.read()