io.popen如何在lua中获得go输出

时间:2019-05-05 18:03:50

标签: lua

如何捕获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()

有什么方法可以不使用临时文件吗?

1 个答案:

答案 0 :(得分:0)

我对此不太清楚。但是也许像下面这样。即通过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。查看有关该here

的更多详细信息