Linux系统环境下如何获得U盘拔插的信息

所属分类: 操作系统 / unix linux 阅读数: 94
收藏 0 赞 0 分享
下面的例子可以监听内核的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> 

#define UEVENT_BUFFER_SIZE 2048 

static int init_hotplug_sock(void); 

int main(int argc, char* argv[]) 

int hotplug_sock = init_hotplug_sock(); 
while(1){ 
char buf[UEVENT_BUFFER_SIZE*2] = {0}; 
recv(hotplug_sock, &buf, sizeof(buf), 0);  
printf("%s\n", buf); 


return 0; 


static int init_hotplug_sock(void) 

struct sockaddr_nl snl; 
const int buffersize = 16 * 1024 * 1024; 
int retval; 

memset(&snl, 0x00, sizeof(struct sockaddr_nl)); 
snl.nl_family = AF_NETLINK; 
snl.nl_pid = getpid(); 
snl.nl_groups = 1; 
int hotplug_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT); 

if (hotplug_sock == -1) { 
printf("error getting socket: %s", strerror(errno)); 
return -1; 


/* set receive buffersize */ 
setsockopt(hotplug_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize)); 
retval = bind(hotplug_sock, (struct sockaddr *) &snl, sizeof(struct sockaddr_nl)); 

if (retval < 0) { 
printf("bind failed: %s", strerror(errno)); 
close(hotplug_sock); 
hotplug_sock = -1; 
return -1; 


return hotplug_sock; 

 
更多精彩内容其他人还在看

教你隐藏Linux的命令行历史

有的时候你可能不想让一些命令记录你的的命令行历史中,本文整理了多种方法让你可以参考。
收藏 0 赞 0 分享

怎样在Linux上录制你的终端操作及回放

在这次的文章中,我们将简单的了解一下如何在Linux上录制和回放终端会话及以gif格式记录的方法。
收藏 0 赞 0 分享

SUSE Linux登录出现黑屏解决方法

登录linux时出现黑屏的找到这篇解决SUSE的黑屏问题
收藏 0 赞 0 分享

个人学习Linux知识总结第1/4页

个人学习linux经常用到的小知识,方便大家以后查阅
收藏 0 赞 0 分享

Linux 下rename 命令的用法第1/2页

刚学习linux的时候,对文件重命名首先想到的就是rename命令,但是按照在windows下对文件重命名的方式试了N多次都没有反应,在网上一搜索,发现很多人都对rename命令知之甚少,甚至有一部分人说linux下没有rename命令,建议大家用mv命令。鉴于此,于是man r
收藏 0 赞 0 分享

Centos 源

Centos操作说明
收藏 0 赞 0 分享

linux备份文件命令收集

收集一些linux下实现文件备份
收藏 0 赞 0 分享

Linux rdesktop操作系统下远程登录Windows XP桌面

众所周知XP下有"远程桌面连接"用来远程登录桌面,设置也非常简单。那有没有什么办法在linux下远程登录到XP呢?有。用rdesktop这个linux下的软件就能实现。
收藏 0 赞 0 分享

Linux操作系统添加新硬盘方法

linux下添加硬盘的方法
收藏 0 赞 0 分享

CentOS 5.1 4.6最新官方下载地址列表

最近公司接触到centos系统,于是找了下,不太容易找到,所以我直接把官方的下载地址,给贴出来了,方便以后下载
收藏 0 赞 0 分享
查看更多