Lua: файл с отображением памяти?

Кто-нибудь из вас знает, как создать файл с отображением памяти в Lua? У меня есть программа, которая пишет код на Lua. Теперь я хочу выполнить код, не сохраняя его в файл, а записывая его в файл «памяти», а затем выполняя его напрямую из памяти. Но я не нашел способ сделать это. Я сейчас пишу такой файл:

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

затем загрузите и запустите его как:

file = loadfile("filename")
file()

Кто-нибудь знает, как записать файл в память или выполнить его из памяти, не сохраняя на диск?


person Euge    schedule 10.02.2014    source источник
comment
Вам действительно нужен файл с отображением памяти (как в случае с mmap(2)), или просто буфер, которым можно манипулировать с помощью файлового интерфейса, как если бы это был файл?   -  person rightfold    schedule 11.02.2014
comment
Я лучше объясню свою проблему, может быть, она не была хорошо описана   -  person Euge    schedule 11.02.2014


Ответы (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
person Oliver    schedule 10.02.2014
comment
Спасибо, попробовал, но это не так быстро, как загрузить файл и запустить его как assert(file)() или просто file() - person Euge; 11.02.2014
comment
Очень сомневаюсь, но не проверял. Какой метод вы использовали для измерения этого? В любом случае, это единственный способ выполнить его из памяти без сохранения на диск (и обратите внимание, что файл с отображением памяти — это блок памяти, который находится в файловой системе, доступный для совместного использования несколькими процессами, поэтому он не удовлетворяет без сохранения на диск :). - person Oliver; 11.02.2014
comment
Спасибо, Шолли, на самом деле ваше предложение работает хорошо. Я ошибся раньше. Спасибо! - person Euge; 12.02.2014