我是 OpenWrt 新手。我正在使用 iwinfo lib 来扫描 wifi。它工作正常,直到我在代码中多次扫描。起初我认为这是因为我使用这个库做错了,所以我尝试修改iwinfo库中的cli程序并使其扫描两次。这是 cli 代码的主要功能,它只会运行一次。 print_scanlist函数的实现与cli程序中相同。
int main() {
const struct iwinfo_ops *iw = iwinfo_backend("wlan0");
print_scanlist(iw, "wlan0");
print_scanlist(iw, "wlan0");
iwinfo_finish();
return 0;
}
起初我认为这是因为硬件不允许在短时间内扫描。但如果我第二次运行该程序,它仍然适用于第一个功能。现在我不知道为什么会发生这种情况,有人知道为什么吗?
最佳答案
我几乎确定这些选项之一(甚至可能两个)都会起作用:
int main() {
const struct iwinfo_ops *iw = iwinfo_backend("wlan0");
print_scanlist(iw, "wlan0");
iwinfo_finish();
print_scanlist(iw, "wlan0");
iwinfo_finish();
return 0;
}
<小时/>
int main() {
print_scanlist(iwinfo_backend("wlan0"), "wlan0");
iwinfo_finish();
print_scanlist(iwinfo_backend("wlan0"), "wlan0");
iwinfo_finish();
return 0;
}
重要的是要了解 iw
不是某种句柄,它只是指向存储在后端库中的函数列表的指针。该列表是硬编码的,无法在运行时修改。
关于c - 使用 iwinfo 库没有扫描结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43538550/