問答

起亞k3怎么插聽歌的?

提問者:ts3060195662013-01-18 00:00

最佳答案

獲得U盤的插入或者拔取得信息的傳統(tǒng)方法是在內(nèi)核級運行hotplug程序,相關參數(shù)通過環(huán)境變量傳遞過來,再由hotplug通知其他關注hotplug的應用程序。這樣的做法效率有些低,現(xiàn)在通過一種特殊類型的socketnetlink實現(xiàn)獲取U盤拔插的信息。netlink專門用于內(nèi)核空間和用戶空間的異步通信。下面的例子可以監(jiān)聽內(nèi)核的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; }

回答者:maxCRJ2016-01-18 00:00

起亞K3相關問題

相關閱讀

起亞K3頻道

報價:11.29-14.39
級別:緊湊型車
排量:1.4T1.5L
變速箱:雙離合無級變速

車友關注

最新標簽

按字母分類:
ABCDEFGHIJKLMNOPQRSTWXYZ0-9