手机
当前位置:查字典教程网 >操作系统 >unix linux >Linux系统环境下如何获得U盘拔插的信息
Linux系统环境下如何获得U盘拔插的信息
摘要:下面的例子可以监听内核的hotplug事件,源代码如下:复制代码代码如下:#include#include#include#include#...

下面的例子可以监听内核的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_SIZE2048

staticintinit_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("%sn",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;

}

【Linux系统环境下如何获得U盘拔插的信息】相关文章:

Linux环境下的高级隐藏技术

如何在linux系统下配置无线网卡?

Linux系统下如何查看已经登录用户

Linux实用工具的命令行详解

linux中查看各硬件资源信息的命令小结

Linux环境下使用JFS文件系统

Linux的文件系统目录结构简要介绍

给Linux新手[系列之二]

Linux系统(Debian和Ubuntu)下彻底删除wine的办法

Linux系统下常见基本问题的解决方法

精品推荐
分类导航