在这个优秀的页面上发现了以下功能:
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
如果我使用 cmd = "ping myknowngoodip -c 1" 执行此函数,那么一切都很好,它会立即返回结果。
但是,如果 ping 超时(服务器宕机左右),它会阻塞整个程序至少 5 秒
对我来说可能的解决方案:
使用协程(但如何正确设计它们以使其正常工作?)
使用某些东西来检测文件是否被写入或是否有写锁(我该怎么做?)
目标是我确实通过 copas ( http://keplerproject.github.io/copas/ ) “查找”请求来 ping 不同的 IP 并报告 IP 是否存在。Copas 已启动并运行,工作至今
非常感谢您的帮助