我想获得可用无线网络的列表。理想情况下,这将通过一些C调用进行,但是我不介意是否必须通过系统调用来混淆它。如果所需的C调用或程序不需要某些奇特的第三方包,甚至会更好。
互联网似乎建议我使用sudo iwlist <interface> scan从命令行确实可以解决问题的技巧,但是我宁愿不需要root权限。我只想了解基础知识,什么也不想改变。
sudo iwlist <interface> scan
该无线工具包-它的iwlist是其中的一部分- 还包含一个无线工具帮助程序库。您需要包含 iwlib.h 并与 libiw.a 链接(即添加-liw)。然后查找 iw_set_ext 函数的文档。该 SIOCSIWSCAN 参数将是最有用的。有关如何使用此接口的示例,请查看KDE库中的KWifiManager源(请参阅:Interface_wireless_wirelessextensions :: get_available_networks方法)。或者,您也可以下载Wireless Tools源代码,并了解如何在iwlist.c中将iwlib iw_set_ext函数也用于扫描。
至于特权,我认为该进程将需要以root用户身份运行才能执行扫描。我很想知道是否也可以这样做。
由于您使用的是Ubuntu 8.04,因此应该使用libiw-dev软件包。