手机
当前位置:查字典教程网 >操作系统 >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系统下将php和mysql命令加入到环境变量中的方法

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

Linux环境下的备份

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

Linux环境下使用JFS文件系统

教你十种提高Linux系统安全性的招数

Linux系统管理命令使用说明

Linux系统中如何实现远程控制

Linux环境中使用Ext3文件系统

给Linux新手[系列之二]

精品推荐
分类导航