在多线程环境中使用专用的“控制台”进行 Lua 会话。

在一个用C++编写的嵌入式多线程程序中,有许多Lua会话(每一个都由它自己的lua_State表示)。每个Lua会话都有一个专用的“控制台”,由一个C++对象表示。这个“控制台”旨在提供会话特定的stdin/stdout/stderr流。

如何将这样的“控制台”交付给Lua会话?

如何实现标准流向/从这样的控制台的重定向的正确方式是什么?

点赞
用户2765603
用户2765603

你可以使用以下方式将 userdata 插入到 io.stdin/ stdout/ stderr 中:

lua_getglobal(L, "io");
lua_pushlightuserdata(L, …); // 或者你想要的任何值
lua_setfield(L, 0, "stdin");
// 对 stdoutstderr 重复上述步骤
2015-05-26 09:10:14