这里提供一个Linux下U盘自动识别和挂载的程序,不是Shell脚本喔。


#define UEVENT_BUFFER_SIZE 2048
#define NETLINK_KOBJECT_UEVENT 15int init_hotplug_sock(void)
{const int buffersize = 1024;int ret;int s;struct sockaddr_nl snl;bzero(&snl, sizeof(struct sockaddr_nl));snl.nl_family = AF_NETLINK;snl.nl_pid = getpid();snl.nl_groups = 1;s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);if (s == -1) {perror("socket");return -1;}setsockopt(s, SOL_SOCKET, SO_RCVBUF, &buffersize,sizeof(buffersize));ret =bind(s, (struct sockaddr *) &snl, sizeof(struct sockaddr_nl));if (ret < 0) {perror("bind");close(s);return -1;}return s;
}void split_udev(char *str)
{char action[50] = { 0 };char block[50] = { 0 };char tmp[50] = { 0 };char dname[50] = { 0 };char fname[50] = { 0 };sscanf(str, "%[a-z]@/%[a-z]/%[^/]/%[^/]", action, block, tmp,fname);if (!strcmp(action, "add")) {if (!strcmp(block, "block")) {if (strlen(fname) > 3) {char cmd[200];sprintf(dname, "/dev/%s", fname);sprintf(cmd, "mount -t vfat %s /mnt/usb",dname);printf("cmd = %s\n", cmd);sleep(2);system(cmd);}}g_usb_state = ADD_DEV;} else if (!strcmp(action, "remove")) {if (!strcmp(str, "remove@/devices/platform/at91_ohci/usb1/1-1")) {sleep(2);printf(" \n");system("umount /mnt/usb");printf("cmd = umount /mnt/usb\n");g_usb_state = REMOVE_DEV;}} else if (!strcmp(action, "mount")) {g_usb_state = MOUNT_DEV;} else if (!strcmp(action, "umount")) {g_usb_state = NO_DEV;}
}// 监视USB状态线程
void *usb_check(void *p)
{int hotplug_sock = init_hotplug_sock();char buf[UEVENT_BUFFER_SIZE * 2] = { 0 };g_usb_state = NO_DEV;while (1) {memset(buf, 0, UEVENT_BUFFER_SIZE * 2);recv(hotplug_sock, &buf, sizeof(buf), 0);printf("%s\n", buf);split_udev(buf);}pthread_detach(pthread_self());
}

Linux下U盘自动识别和挂载相关推荐

  1. linux下实现USB设备(U盘)及SD卡自动识别及挂载(应用层) linux下U盘识别及挂载 linux下SD卡识别及挂载

    两种方式,一种是注册通信句柄去监测内核发送的消息,一种是直接读取文件.第一种网上有很多,可以自行百度,但是这种方式只能识别热插拔,下面主要介绍通过读取文件去识别U盘及SD卡节点,实现挂载. 两个目录及 ...

  2. centos挂载u盘只读_完美解决linux下U盘文件只读的问题

    1. 在终端运行如下命令 tail -f /var/log/syslog 2. 插入有只读文件系统故障的U盘 3. 观察命令行输出 输出局部如下: Jul  8 16:44:50 cslouis-pc ...

  3. linux下U盘的挂载方法

    标题 linux下U盘的挂载方法. #df -h 查看U盘的名称(/dev/sdb1) 在mnt下建立udisk目录(mkdir udisk) 挂载mount /dev/sdb1 /mnt/udisk ...

  4. linux u盘识别日志message,linux下U盘识别问题

    linux下U盘识别问题 发布时间:2008-01-10 10:53:49来源:红联作者:skurialtn 平台:redhat9.FC5.S3c2410Embedded Linux 硬件:KingS ...

  5. linux命令怎么打开优盘,Linux下U盘使用具体步骤

    Linux下U盘使用具体步骤 Linux系统对大多数个人用户来说,是一个比较陌生的事物.Linux下面有很多分支系统,其中最有名的当属Ubuntu这一个了.今天小编就借用Ubuntu来讲讲Linux下 ...

  6. 【分享】linux下u盘使用

    2019独角兽企业重金招聘Python工程师标准>>> linux下u盘使用 方案一:  Linux不像Windows一样,接上新硬件后可以自动识别,在Linux下无法自动识别新硬件 ...

  7. linux把u盘只读文件,完美解决linux下U盘文件只读的问题

    完美解决linux下U盘文件只读的问题 1. 在终端运行如下命令 tail -f /var/log/syslog 2. 插入有只读文件系统故障的U盘 3. 观察命令行输出 输出局部如下: Jul  8 ...

  8. linux下u盘目录带锁,完美解决linux下U盘文件只读的问题

    1. 在终端运行如下命令 tail -f /var/log/syslog 2. 插入有只读文件系统故障的U盘 3. 观察命令行输出 输出局部如下: Jul  8 16:44:50 cslouis-pc ...

  9. 1虚拟机下U盘或磁盘挂载,Ubuntu下的网络配置,图形化界面和命令界面之间的切换,软件源配置

     一设置磁盘挂载(磁盘默认挂载到了/media目录下了) A:插入移动硬盘 B:对虚拟机进行设置(虚拟机->可移动设备àtoshibaExternal USB 3.0(这个是我的移动硬盘插上 ...

最新文章

  1. 转发和重定向的区别?
  2. 多线程编程实践——实现生产者、消费者模型
  3. 【VMCloud云平台】私有云门户第一朵Web云(一)
  4. 图像分割 | FCN数据集制作的全流程(图像标注)
  5. 《Web前端开发精品课 HTML与CSS进阶教程》——1.4 id和class
  6. 【学习笔记】关于最大公约数(gcd)的定理
  7. phpMyAdmin - Error
  8. 时任上海来伊份互联网事业群总裁王戈钧 :传统企业(线上+线下)移动互联网改造...
  9. OSI 认证的开源 License 有哪些?
  10. linux 安装docker
  11. sql server 复制_SQL Server复制配置:点对点和合并复制
  12. 【2016北京集训测试赛(七)】自动机 (思考题)
  13. 缠中说禅电子书_缠中说禅作者的可怕之处
  14. java 字符串去重排序
  15. vmware 安装报错:failed to install hcmon drivers 完美解决(含VMware15激活码)
  16. 【渝粤教育】广东开放大学 经济法基础 形成性考核 (38)
  17. MC服务器启动脚本写法
  18. GlobalCash全球付万事达虚拟信用卡-可用于国外支付购物
  19. 测试 软通动力软件测试机试_软通动力软件测试笔试题 (转)
  20. 新走遍美国第一遍总结

热门文章

  1. Windows 10任务栏中托盘区(通知区域)图标消失的解决方法
  2. 智慧工厂数字孪生 数字孪生工厂 工厂数字孪生
  3. pixhawk2.4.8飞控相关资料
  4. 移远 BC35-G 模块固件升级
  5. 软件智能:aaas系统对AI的诠释-AI的可能的三个取向和必然的一个成果(演绎逻辑-必然的推理-的两个独立性:推论和定论)
  6. yum源服务器本地配置
  7. 什么是车联网,IoV(Internet of Vehicles)
  8. WeX5打包项目为app步骤详解
  9. 组成原理——中央处理器(CPU功能和组成)
  10. 云原生|kubernetes |一文带你搞懂pod调度策略,驱逐策略,污点、容忍调度