perform arithmetic on a nil value 可以看到客户端输出了服务器返回的通用错误消息,注意这是一个动态抛出的异常,Redis 会保护主线程不会因为脚本的错误而导致服务器崩溃...在 Redis 的源码中可以看到 lua 脚本的执行被包裹在 pcall 函数调用中。...err = lua_pcall(lua,0,1,-2); ..
最近在学习使用Lua,也通过基本的语法知识完成了公司的一个关于配置文件参数合法性检查的小任务。虽然任务完成了,但对于一些函数的调用目的还是搞不明白,这两天再次重看了Manual Reference,稍微梳理出了一点眉目,记录在此。 首先看一段小小小程序 functionprintmsg()print("hello world")end x=10 //test.c #include<...
意思就是:当一个函数有多个返回值,第一个返回值首先push,第二个返回值再push,以此类推。 所以要想得到第一个返回值就:lua_toxxxx(L,1),第二个返回值就是lua_toxxxxx(L,2)
DepressedMan 嗯嗯,我这几天研究明白了,通过_G可以遍历所有的变量,表,函数,只是不知道,能不能遍历出,函数的源码 大佬,请问如果找到G表,并遍历函数名称哎,能HOOK 指定的 lua函数不 2023-3-20 16:22 0 游客 登录 | 注册 方可回帖 回帖 表情 雪币赚取及消费 高级回复 返回...
昨天晚上磕磕绊绊的把nginx 装好了(所有需要的包都是源码包),今天开始部署数据库,因为需要lua语言环境支持,所以需要先安装lua,结果这东西安装也不是那么顺利, 第一步是 make 第二步 make linux 这里出错了,提示如下 luaconf.h:275:31: error: readline/readline.h: No such file or direc ...
文章中没有贴Lua源码,只画出了结构图,和算法的伪代码。这样阅读起来更加直观。一、TString的概述 1、lua中字符串是常量,例s = s .. 1 创建了一个新的字符串赋值给s,并不是改变了s字符串中的数据。 2、lua中字符串分为长字符串和短字符串。 长字符串和短字符串区别 (1)存储方式: 短字符串:全局存储...
首先压入函数 ,再依次压入参数,现在你就可以调用lua_call了,函数调用后将参数,函数都弹栈,函数返回时会将返回值依次压栈。 调用前堆栈情况 参数 参数 函数 调用后堆栈情况 返回值 注意:无论在c函数里怎么调用栈,在pcall之后都会按函数的参数和返回值恢复栈...
文章中没有贴Lua源码,只画出了结构图,和算法的伪代码。这样阅读起来更加直观。一、TString的概述 1、lua中字符串是常量,例s = s .. 1 创建了一个新的字符串赋值给s,并不是改变了s字符串中的数据。 2、lua中字符串分为长字符串和短字符串。 长字符串和短字符串区别 (1)存储方式: 短字符串:全局存储...
lua_pcall和lua_call功能一样,只是lua_pcall提供了一个可以提供错误处理函数的功能首先压入函数 ,再依次压入参数,现在你就可以调用lua_call了,函数调用后将参数,函数都弹栈,函数返回时会将返回值依次压栈。调用前堆栈情况参数参数函数调用后堆栈情况返回值注意:无论在c函数里怎么调用栈,在pcall之后都会按函数的参数...
lua_pcall和lua_call功能一样,只是lua_pcall提供了一个可以提供错误处理函数的功能首先压入函数 ,再依次压入参数,现在你就可以调用lua_call了,函数调用后将参数,函数都弹栈,函数返回时会将返回值依次压栈。调用前堆栈情况参数参数函数调用后堆栈情况返回值注意:无论在c函数里怎么调用栈,在pcall之后都会按函数的参数...