用lua编写的配置文件能被我的C程序热加载吗?

用lua编写的配置文件能被我的C程序热加载吗?,c,lua,config,C,Lua,Config,我试图在我的C程序中嵌入Lua,以扩展程序的可调试性。 Lua教程描述了如何将Lua用作配置文件。在配置文件中,可以定义Lua变量,甚至函数,因此C程序可以加载该文件并使用Lua函数来扩展其某些功能 但是,如果在加载配置文件后对其进行了修改,则新内容将不会生效。我的问题是如何在不重新启动C程序的情况下支持热重新加载 编辑: 一个更基本的问题:既然Lua函数/变量已经加载,它们可以被覆盖吗?例如,C程序一直在循环中调用函数f1(x)return x*x end,然后在配置文件中将该函数更改为函数f

我试图在我的C程序中嵌入Lua,以扩展程序的可调试性。 Lua教程描述了如何将Lua用作配置文件。在配置文件中,可以定义Lua变量,甚至函数,因此C程序可以加载该文件并使用Lua函数来扩展其某些功能

但是,如果在加载配置文件后对其进行了修改,则新内容将不会生效。我的问题是如何在不重新启动C程序的情况下支持热重新加载

编辑:
一个更基本的问题:既然Lua函数/变量已经加载,它们可以被覆盖吗?例如,C程序一直在循环中调用
函数f1(x)return x*x end
,然后在配置文件中将该函数更改为
函数f1(x)return x*x end
。如果我们能以某种方式热加载它,C程序会使用新的定义吗?

您需要一个事件循环来侦听磁盘上正在更改的文件。在Linux上您可以使用。请指定您的操作系统。@DirkHorsten它是Linux。不同的操作系统会有不同的解决方案吗?只需在相同的环境中再次执行*.lua,它就会超时。配置通常在内存中保持不变。当进行更改或应用程序退出时,它会写入磁盘。如果要在修改文件时重新加载,是要lua解决方案还是C解决方案?对于lua,lfs将起作用。我建议luamarshal序列化一个表并将其写入磁盘以进行持久性存储,该存储可用于函数和用户数据。或者,您可以将打印表函数更改为写入磁盘:(即return{…})@Alundaio您的第一句话“只要在相同的环境中再次执行*.lua,它就会超时。”回答我上面提出的基本问题吗?重新执行*.lua后,新函数定义立即生效?