在多线程环境中 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
在用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