diff --git a/source/tools/monitor/unity/beeQ/foxRecv.lua b/source/tools/monitor/unity/beeQ/foxRecv.lua index 1e3c2dd62b45d75c7d5cfca275483187259279d7..9537e10b6b963af26bde38888037d0c6fd2ca34d 100644 --- a/source/tools/monitor/unity/beeQ/foxRecv.lua +++ b/source/tools/monitor/unity/beeQ/foxRecv.lua @@ -11,6 +11,7 @@ local system = require("common.system") local CfoxRecv = class("CfoxRecv") local unistd = require("posix.unistd") local fcntl = require("posix.fcntl") +local bit = require("bit") local struct = require("struct") local function setupCo(fYaml) @@ -24,6 +25,10 @@ local function setupCo(fYaml) fcntl.fcntl(fdIn, 1031, 1024 * 1024) fcntl.fcntl(fdOut, 1031, 1024 * 1024) + + local flag = fcntl.fcntl(fdOut, fcntl.F_GETFL, 0); + flag = bit.bor(flag, fcntl.O_NONBLOCK) + lua_push_start(fdIn) return fdIn, fdOut end @@ -50,11 +55,19 @@ function CfoxRecv:_del_() end end -function CfoxRecv:outToFd(stream) +local function pipeOut(fd, stream) local len = #stream local s = struct.pack(" 0 then - self:_pollFd(bfd, cli, nes, coIn, coOut) + coOut = self:_pollFd(bfd, cli, nes, coIn, coOut) else self:checkOvertime(cli, coOut, ffi) end