问答

为什么起亚k2 u盘插上不能听歌

提问者: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

起亚K5相关问题

相关阅读

起亚K5频道

报价:15.98-25.18
级别:中型车
排量:1.6T 2.0L2.0T 2.4L 其他
变速箱:-

车友关注

最新标签

按字母分类:
ABCDEFGHIJKLMNOPQRSTWXYZ0-9