首页 > 解决方案 > 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()

有没有办法在不使用临时文件的情况下做到这一点?

标签: lua

解决方案


我对此并不完全清楚。但也许像下面这样。即管道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。在此处查看更多详细信息


推荐阅读