Lua:内存映射文件?

3

你们中有人知道如何在Lua中创建内存映射文件吗? 我有一个编写Lua代码的程序。现在我想执行这段代码,但是不想将其保存到文件中,而是将其写入“内存”文件,然后直接从内存中执行。 但我没有找到这样做的方法。现在我正在像这样写入一个文件:

file:write(instruction..'\n')

然后将其加载并运行:

file = loadfile("filename")
file()

有人知道如何将文件写入内存或从内存中执行它,而不必将其保存到磁盘吗?

2
你是否真的需要一个内存映射文件(例如mmap(2)),还是仅需要一个缓冲区,可以使用文件接口来操作它,就像它是一个文件一样? - user1804599
我更好地解释一下我的问题,也许之前没有描述清楚。 - Euge
1个回答

3

使用loadstring函数:

chunk = loadstring("return ..., 1+2, 'hi'")
assert(chunk)
a, b, c = chunk(123) -- you can call many times
print (a,b,c) -- prints 123     3      hi

谢谢,我试过了,但是它没有直接加载文件然后运行assert(file)()或者file()快。 - Euge
1
我真的很怀疑,但我还没有测试过。你用什么方法来衡量这个?无论如何,这是唯一的“从内存中执行而不保存到磁盘”的方法(请注意,内存映射文件是一个在文件系统上的内存块,可供多个进程共享,因此它不能满足“不保存到磁盘”:)。 - Oliver
谢谢Scholli,你的建议确实很有效。我之前犯了一个错误。谢谢! - Euge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接