手机
当前位置:查字典教程网 >操作系统 >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环境下使用JFS文件系统

linux系统如何访问NTFS磁盘

Linux操作系统下关于用户和组的配置管理指南

Linux系统管理命令使用说明

linux 如何查看硬盘大小

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

Linux操作系统中BSD套接口开发的基础介绍

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

Linux环境下使用GFS文件系统

精品推荐
分类导航