如何从lua中删除std文件管理

时间:2012-08-28 17:43:20

标签: filesystems lua cross-platform std stdio

我尝试将lua集成到我的项目中(lua 5.2.1) 我编译它没有问题。

但我的问题是我的项目使用我自己的系统从文件系统读取/写入文件。

所以我开始修改lua来替换每次调用fopen / fclose / fread / fwrite ...

但问题是如果stdio fct和stdio fct使用了一些FILE函数,我的项目中没有相同的东西(并且没有那么容易重新实现),例如:Lua太混合了,例如: ungetc函数 setvbuff

依旧......

我的问题^^ 一些aleeady尝试这样做?如果是的话怎么样? 有人现在是具有此功能的lua的扩展(某些c库使用回调函数来询问打开/关闭文件)吗?

对于我来说,真正使用多层平台或者甚至嵌入系统的lua使用std lib非常有用,对于真正的跨平台lib而言,每种类型和来自std的fct的类型都很容易使用变化

感谢您提供的任何帮助:)

1 个答案:

答案 0 :(得分:3)

你不是在问“Lua the language's”文件IO;你在谈论“Lua the C library's”文件IO。这个问题并不清楚。

Lua对此有规定。例如,luaL_loadfile只是一个函数的语法糖,它打开给定文件,加载它,关闭文件,然后在其上调用luaL_loadstring

如果您处于文件IO必须通过不同通道的环境中,则不应尝试使luaL_loadfile使用新文件IO。您应该编写一个新函数,从文件系统加载文件并调用luaL_loadstring

简而言之:您不应该使用任何需要文件的Lua API。 Lua的基于文件的功能是便利功能;而已。 Lua本身已经有了这方面的规定;每个基于文件的API都有一个非基于文件的版本,它也可以正常工作。你不应该修改Lua本身。