Lua中io.popen函数中的无限循环问题

我想要无限执行以下代码。然而,如果有两个设备连接,那么无限循环会在第二个扫描部分冻结。(第二个扫描阶段指的是无限循环第二次开始并执行扫描命令。)为什么会出现这个问题?

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

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

点赞
用户107090
用户107090

我不知道 iw 命令是做什么的,但是如果在打开管道之后没有从中读取任何内容并立即关闭它,那么程序可能永远不会执行。

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

while true do
   print("Hi")
   os.execute("iw wlan0 scan; iw wlan0 disconnect; iw wlan0 connect Name")
   print("进入扫描状态")
end
2017-12-08 10:32:58