本帖最后由 一撇一捺 于 2018-5-17 16:05 编辑
在嵌入式开发板上(Linux+qt),如今想要实现这一一功能,插入U盘能及时自动检测到并能读取U盘内文件的数据进行下一步的操作。由于对USB hotpliug不了解,所以我用了最笨的方法利用一定时器和信号槽定时周期检查/dev/sda1设备节点的存在与否来判断有没有U盘插入,部分代码如下: sprintf(temp,"fdisk -l");
stream = popen(temp, "r"); //通过popen执行命令fdisk -l 通过管道读取(“r”参数)到FILE* stream
while(fgets(buf, sizeof(buf), stream)!=NULL) //将流文件内容获取到buf内
{
if(!strncmp(buf,"/dev",4))
{
sscanf(buf,"/dev/sd%c%d:",&stt,&usb_index);
memset(temp,0,sizeof(temp));
sprintf(temp,"sd%c",stt);
if(stt=='a')//index==1)
{
usb=stt;
break;
}
index++;
}
}
.......
红色代码居然返回了空,蓝色代码buf里面获取到的内容也是空了,但我手动在命令行下执行fdisk -l时是很正常显示一些内容的,为什么这里利用popen函数就执行不了呢?不知道各位遇到过这种情况没有,或者有更好的办法来达到同样的功能(自动识别出U盘)?希望能得到大家的指教,谢谢!
|