
一直专注于lua问题回答已经好多年了
已经有无数人提出了lua定时的问题 但我也一直不回答
其实更希望的是提出问题的朋友门能先对lua有一个比较深的理解后再来提问题
类似功能不是无法实现 但是实现原理你们也最好去弄清楚一下
首先lua是一门很小的脚本语言 因为很小(大概就200K) 所以大部分功能都没有 只提供了最基本的库和语法解释等功能
所以 定时相关的函数 肯定就不在lua的范畴里了
那这样得怎么实现定时的功能呢 lua有很强的扩展性 可以在它的宿主语言(一般是C/C++)上实现好相关的lua接口 然后供脚本调用
所以 原理就是在你的宿主语言上实现好一个CFUNCTION 然后开放给lua来实现
但是一般开发者 只负责写脚本这边,而对宿主语言完全没有接触,甚至连lua的调用过程都不理解 所以相关问题也是无法解决的 因此 能不能实现定时的功能 完全依赖于你对宿主语言的控制程度
Lua是一种 简单、可扩展、可移植及高效的脚本语言
是一种面向 C 的 API 存在一个特别的 虚拟栈 ,通过这个栈与lua交换数据
栈大大简化了C API 的设计与使用,还能保证 其他语言与lua 有效的隔离开
从设计目的来讲:
1就是某一个功能模块,通过lua进行扩展
2想只靠lua开发程序,是不太现实的
programming in lua 有相关的例子,一般脚本语言和c/c++之类的互相调用分两类,一类是扩展,就是将c/c++模块封装起来给脚本语言用,用swig做封装很方便的,一类是嵌入,就是在c/c++等应用中嵌入lua引擎,一般是用来分离经常变化的逻辑部分,比如WOW就是用lua语言作为扩展,用户可以编写lua脚本来完成一些特定功能的机器人。你要做的就是使用lua c api来在你的程序中执行lua。类似这种:
int iErr = 0;
lua_State lua = lua_open (); // Open Lua
luaopen_io (lua); // Load io library
if ((iErr = luaL_loadfile (lua, "testlua")) == 0)
{
// Call main
if ((iErr = lua_pcall (lua, 0, LUA_MULTRET, 0)) == 0)
{
// Push the function name onto the stack
lua_pushstring (lua, "helloWorld");
// Function is located in the Global Table
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pcall (lua, 0, 0, 0);
}
}
lua_close (lua);
以上就是关于lua 脚本如何实现循环一套动作至规定时间后关闭程序然后重新打开。全部的内容,包括:lua 脚本如何实现循环一套动作至规定时间后关闭程序然后重新打开。、什么是Lua、请问自己的软件如何运行Lua脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)