actboy168 / bee.lua

Lua runtime and toolset
MIT License
158 stars 30 forks source link

subprocess的使用问题 #26

Closed tonyzzp closed 2 years ago

tonyzzp commented 2 years ago

subprocess必须先关闭stdin后才能从stdout读取数据吗。 可不可以交叉进行。

actboy168 commented 2 years ago

没有限制

tonyzzp commented 2 years ago

这里如果stdin是true,stdout就读不到数据,从echo.exe来看,也没有收到任何数据。 如果stdout是false,就可以正常读到数据。

但是如果stdin设置为true,写完数据后马上close,stdout是可以正常读到返回的数据的。

我想要双向交互,好像不行啊。

local subprocess = require("bee.subprocess")

local process, err = subprocess.spawn({
    "d:\\myprojects\\echo\\echo.exe",
    stdin = true,
    stdout = true,
})

-- process.stdin:write("hello server.\n")
-- process.stdin:close()
-- process:wait()

local all = process.stdout:read(50000)
print(all)
actboy168 commented 2 years ago

你需要用setvbuf或者flush,刷新下缓存

tonyzzp commented 2 years ago

多谢。