【问题标题】:Lua: memory mapped file?Lua:内存映射文件?
【发布时间】:2014-02-10 21:38:06
【问题描述】:

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

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

然后加载并运行它:

file = loadfile("filename")
file()

有谁知道如何将文件写入内存或从内存执行而不将其保存到磁盘?

【问题讨论】:

  • 您真的想要一个内存映射文件(如mmap(2)),还是只是一个可以像文件一样使用文件接口操作的缓冲区?
  • 我更好地解释了我的问题,也许描述得不好

标签: lua memory-mapped-files


【解决方案1】:

使用加载字符串:

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()
  • 我真的很怀疑,但我没有测试过。你用什么方法来测量这个?无论如何,这是“从内存中执行而不将其保存到磁盘”的唯一方法(请注意,内存映射文件是文件系统上的一块内存,可供多个进程共享,所以它确实不满足“不将其保存到磁盘”:)。
  • 谢谢 Scholli,实际上你的建议很有效。我之前犯了一个错误。谢谢!
猜你喜欢
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 2011-05-14
  • 2016-12-08
  • 2010-09-26
  • 1970-01-01
  • 2012-02-08
相关资源
最近更新 更多