使用wpa_cli调用接口报错failed opendir
daisy.skye-CSDN博客https://blog.csdn.net/qq_40715266?type=blog
static char * wpa_cli_get_default_ifname(void)
{
char *ifname = NULL;
#ifdef CONFIG_CTRL_IFACE_UNIX
struct dirent *dent;
printf("opendir is %s\n",ctrl_iface_dir);
DIR *dir = opendir(ctrl_iface_dir);
if (!dir) {
perror("failed opendir");
closedir(ctrl_iface_dir);
#ifdef ANDROID
char ifprop[PROPERTY_VALUE_MAX];
if (property_get("wifi.interface", ifprop, NULL) != 0) {
ifname = os_strdup(ifprop);
perror("Using interface '%s'\n", ifname);
return ifname;
}
#endif /* ANDROID */
perror("not ANDROID return null\n");
return NULL;
}
通过wpa_supplicant执行conf配置并且增加ctrl_interface=/var/run/wpa_supplicant
但是执行wpa_cli在调用控制接口后,直接报错
在DIR *dir = opendir(ctrl_iface_dir);
执行后报错返回opendir is /var/run/wpa_supplicant
failed opendir: No such file or directory
Illegal instruction
显然路径是有的权限也有,并且将当前执行进程关闭重新加载后就正常
分析了超级久,最后怀疑是wpa_supplicant在配置后的没有完全配置完接口导致的情况
最终在执行wpa_supplicant后添加了sleep延迟函数解决,大概3-4秒参数自定义
可能是由于调用的是nl82011和之前的默认参数的网卡内核不一致导致的启动时间不同把
整整弄了一天,才发现很无语=_=!