如何在调用lua_resume时避免阻塞?

我需要一些帮助来理解以下情况,因为我目前对此知识不足,不知道从哪里开始。从具有主Lua状态的C pthread中,每个请求都会创建一个Lua协程,在堆栈上放置一个预注册的Lua函数和一些参数,并使用lua_resume启动它。此Lua脚本函数执行io.popen并调用获取相应fd的C函数,设置为非阻塞并将其添加到读取事件队列中,并执行lua_yield。到此为止都很好,C接管了。当C回调lua_resume时,它会阻塞,直到我完成从涉及到的FILE*的fd读取所有内容。我有没有办法避免这种阻塞?如果我只想读取一个字符并立即返回C,而不关心io.popen的其余输出呢?我尝试过在LuaJIT 2.1beta3和Lua 5.1中尝试过这种方法,它们的行为相同。任何帮助将不胜感激。

点赞