lua 脚本如何实现循环一套动作至规定时间后关闭程序然后重新打开。

lua 脚本如何实现循环一套动作至规定时间后关闭程序然后重新打开。,第1张

一直专注于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脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9536069.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存