提問者:TAR772013-05-30 00:00
獲得U盤的插入或者拔取得信息的傳統方法是在內核級運行hotplug程序,相關參數通過環境變量傳遞過來,再由hotplug通知其他關注hotplug的應用程序。這樣的做法效率有些低,現在通過一種特殊類型的socketnetlink實現獲取U盤拔插的信息。netlink專門用于內核空間和用戶空間的異步通信。下面的例子可以監聽內核的hotplug事件,源代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<sys/un.h>
#include<sys/ioctl.h>
#include<sys/socket.h>
#include<linux/types.h>
#include<linux/netlink.h>
#include<errno.h>#defineUEVENT_BUFFER_SIZE2048staticintinit_hotplug_sock(void);intmain(intargc,char*argv[])
{
inthotplug_sock=init_hotplug_sock();
while(1){
charbuf[UEVENT_BUFFER_SIZE*2]={0};
recv(hotplug_sock,&buf,sizeof(buf),0);
printf("%s
",buf);}
return0;
}staticintinit_hotplug_sock(void)
{
structsockaddr_nlsnl;
constintbuffersize=16*1024*1024;
intretval;memset(&snl,0x00,sizeof(structsockaddr_nl));
snl.nl_family=AF_NETLINK;
snl.nl_pid=getpid();
snl.nl_groups=1;
inthotplug_sock=socket(PF_NETLINK,SOCK_DGRAM,NETLINK_KOBJECT_UEVENT);if(hotplug_sock==-1){
printf("errorgettingsocket:%s",strerror(errno));
return-1;
}/*setreceivebuffersize*/
setsockopt(hotplug_sock,SOL_SOCKET,SO_RCVBUFFORCE,&buffersize,sizeof(buffersize));
retval=bind(hotplug_sock,(structsockaddr*)&snl,sizeof(structsockaddr_nl));if(retval<0){
printf("bindfailed:%s",strerror(errno));
close(hotplug_sock);
hotplug_sock=-1;
return-1;
}returnhotplug_sock;
}
回答者:lukiii2016-05-30 00:00
AVI格式 使qq音樂下載音樂就行啊
提問者:aiaixiaoxie2016-03-25
MPEG試一下
提問者:xl78173882013-03-31
有USB接口的,直接插上
提問者:ls7517284012013-10-10
可以的。不過電腦以外的設置對U盤的兼容性不是很好,就是可能只識別幾種U盤,這個需要多嘗試哪個可用在CD上了。U盤的格式最好格成通用的FAT32格式,另外,一些U盤本身就是不支持電腦以外設備的。
提問者:ysbrt2013-07-03
Empty USB是指的空的文件目錄啊,呵呵 我的車也是智跑的。 應該是自動識別的,我的N97接在智跑上都可以自己找到目錄的,文件夾比你的多多了 你在電腦下看看是不是文件夾被隱藏啦 ?
提問者:mdigng2013-06-07
不可能播放U盤音樂的。 點煙器上連接的USB接口,只是個USB供電接口,或者叫變壓器,把點煙器的12V轉為手機充電用的5V。 里面并沒有MP3播放的芯片,也沒有連到音箱,所以不可能插U盤播放音樂的。 必須是獨立
提問者:rb41582015-04-27