为什么“iw wlan0 scan”会导致错误“网络关闭(-100)”或“设备或资源繁忙(-16)”

为什么“iw wlan0 scan”会导致错误“网络关闭(-100)”或“设备或资源繁忙(-16)”

为什么“iw wlan0 scan”不稳定?有时它会提供输出,但大多数时候什么都不返回,并提供“资源繁忙”或“网络已关闭”错误消息。我用 shell 脚本编写了此扫描,这是问题所在吗?还有其他关于根本原因/修复的想法吗?

是什么原因导致了这个资源繁忙问题?资源繁忙错误始终是上述两个错误中的第一个。

答案1

这是为了回答有关“网络中断”的问题部分

     iw dev wlan0 scan 
     command failed: Network is down (-100)

对命令进行 strace 以找到问题的线索

      access("/proc/net", R_OK)               = 0
      access("/proc/net/unix", R_OK)          = 0
      socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
      ioctl(4, SIOCGIFINDEX, {ifr_name="wlan0", }) = 0
      close(4)                                = 0
      socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
      ioctl(4, SIOCGIFINDEX, {ifr_name="wlan0", }) = 0
      close(4)                                = 0

这表明问题源于接口状态。

现在,正如您所知,在正常运行中,当网络接口已激活并正在工作时,您会在输出的第三行看到现已弃用的 ifconfig

      UP BROADCAST RUNNING MULTICAST

对于没有被激活的网络接口,没有“UP”和“RUNNING”,通常只是

      BROADCAST MULTICAST

所以在做了简单的

      ifconfig wlan0 up

要将 wlan0 接口置于“启动并运行”状态,命令

      iw dev wlan0 scan

不再给出“网络已关闭”的错误消息,并对接口设备支持的WiFi频率进行了扫描。

有时错误消息比应有的更不透明。

至于为什么会出现错误消息“设备或资源繁忙”,这是因为一些其他 WiFi 相关程序正在运行并访问 WiFi 接口,例如 wpa_supplicant、hostapd、网络管理器、wicked、kismet、wavemon,这只是众多可能性中的六种,正如其他人在评论中正确指出的那样。

相关内容