在多线程环境中 Lua 个具有专用 "consoles" 的会话

Lua sessions with dedicated "consoles" in multithreading environment

在用C++编写的嵌入式多线程程序中,有很多Lua session(每个都用自己的lua_State表示)。每个 Lua session 都有一个由 C++ object 表示的专用 "console"。此 "console" 旨在提供 session-specific stdin/stdout/stderr 流。

将这样的 "console" 传递给 Lua session 的正确方法是什么?
实现标准流重定向的正确方法是什么 to/from 这样的控制台?

您可以使用

userdata插入io.stdin/stdout/stderr
lua_getglobal(L, "io");
lua_pushlightuserdata(L, …); // or whatever value you want here
lua_setfield(L, 0, "stdin");
// rinse, repeat for stdout and stderr