【问题标题】:How to access lua stack, from lua如何从 lua 访问 lua 堆栈
【发布时间】:2015-11-05 15:39:18
【问题描述】:

我有一个简单的程序,它在一个 lua 文件上运行 luaL_dofile(我们称它为“script.lua”,然后检查错误,然后再次运行该文件,依此类推。如果在任何时候程序发现一个错误,它将它写入日志然后终止。问题是,script.lua 获取用户的输入,然后使用loadstring 运行该字符串。我不想发生的事情(以及确实发生的事情)是为loadstring 创建错误(因为用户输入了错误的代码),然后 C++ 程序发现此错误并终止程序。在我看来,防止 C++ 程序发现错误的最佳方法是将其从堆栈,但我不知道如何从 script.lua 访问 lua 堆栈。

【问题讨论】:

  • C++ 程序如何使用'loadString' 或您的 lua 脚本调用的任何其他函数查看堆栈?在控制权返回 C++ 之前,应弹出这些堆栈条目。

标签: c++ lua


【解决方案1】:

显然问题是我一直很傻。我更改了我的代码,以便它检测到错误然后打印它,而不是使用assert

script.lua 的示例:

这不能正常工作:

local input = io.read()

assert(loadstring(input))()

这确实可以正常工作:

local input = io.read()

output, error = loadstring(input)
if (output == nil) then
    print (error)
else
    output()
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-06
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多