io.popen 中的无限循环 lua 中的函数

Infinity loop in io.popen function in lua

我想无限执行下面的代码。 但是,如果连接了两个设备,则无限循环会冻结在第二次扫描部分(第二次扫描部分意味着无限循环第二次开始并执行扫描命令)。为什么会出现这个问题?

while true do
print("Hi")
s = io.popen("iw wlan0 scan")
s:close()
print("Done")

dis = io.popen("iw wlan0 disconnect")
dis:close()

c = io.popen("iw wlan0 connect Name")
c:close()
print("Goes to Scan")
end

此外,如果我手动在命令行中键入命令(扫描 -> 断开连接 -> 连接 -> 扫描),则扫描打印结果会在第二次扫描时自动重复 5 到 6 次。 (当我执行扫描命令时,打印的结果是 SYNC - End of SCAN, restore to 20MHz channel 32, Total BSS[02] bImprovedScan ...... Resume for bImprovedScan, SCAN_PENDING .....................并且此打印文本重复 5 到 6 次)。这种情况和这个问题有关吗?

我不知道 iw 命令的作用,但是使用管道而不读取任何内容并在打开后立即关闭它会导致程序永远不会执行的可能性。

我建议使用 os.execute 而不是 io.popen:

while true do
   print("Hi")
   os.execute("iw wlan0 scan; iw wlan0 disconnect; iw wlan0 connect Name")
   print("Goes to Scan")
end