lua - io.popen 如何在 lua 中获取 go 输出
问题描述
我如何捕获编译器错误进入 lua?
我试图在执行脚本时使用 lua 在 tmux 面板中获取 comp 编译器错误的输出,结果仅显示在当前面板中,而不显示在第二个面板中,并且 /tmp/output 文件始终为空
cmd=io.popen("go build -gcflags=-e scree.go")
f=io.open("/tmp/output")
f:write(cmd:read("*all"))
for line in f:lines() do
os.execute("tmux run-shell -t 2 'echo " .. line .. "' ")
end
f:close()
有没有办法在不使用临时文件的情况下做到这一点?
解决方案
我对此并不完全清楚。但也许像下面这样。即管道stderr 到stdout 并捕获结果(未测试)。
f = assert (io.popen ("go build -gcflags=-e scree.go 2>&1"))
for line in f:lines() do
os.execute("tmux run-shell -t 2 'echo " .. line .. "' ")
end
f:close()
我认为关键是popen不会捕获stderr。在此处查看更多详细信息
推荐阅读
- laravel - 将方向更改为 rtl Image Intervention Text()
- android - 如何在低刷新率显示android设备中使动画更流畅?
- qt - QStringList split()函数和simplifyWhiteSpace()函数
- javascript - HTML 选项和值交换
- optimization - 将许多演员添加到舞台上
- python - 向 S3 报告实验室条形码生成存储文件?
- arrays - 导致问题的附加运算符的位置
- .net - 具有多个 A 记录的 HttpClient 的行为是什么?
- python - ImportError:无法从“unittest”导入名称“Testcase”
- node.js - TypeScript 在@types 中找不到类型