思路:

  1、使用df -h |grep mnt shell 命令查找到挂载路径信息

  本代码是将结果存入文件中,再从文件中解析出路径信息。也可使用fopen直接从管道中读取信息

2、解析出信息最后的/mnt/XXX 即为最后的路径

  1. /*
  2. *@brief 获取U盘挂载路径
  3. *@param 获取的挂载路径
  4. *@return 成功返回0.失败返回-1
  5. */
  6. static int GetUDiskMountPath(char * mnt_path)
  7. {
  8. int fd = 0, ret = 0, rdsize = 0;
  9. char buf[1024] = {0};
  10. fd = open("./extendevinfo.txt", O_CREAT | O_RDWR | O_NONBLOCK | O_TRUNC, 0777);
  11. if(fd < 0)
  12. {
  13. printf("open error\n");
  14. return - 1;
  15. }
  16. ret = system("df -h |grep mnt >./extendevinfo.txt");
  17. if(ret)
  18. {
  19. // printf("system error\n");
  20. return - 1;
  21. }
  22.  
  23. rdsize = read(fd, buf, sizeof(buf));
  24. // printf("buf = %s\n", buf);
  25. if(rdsize < 2)
  26. {
  27. printf("read error\n");
  28. return - 1;
  29. }
  30.  
  31. ret = analysis_monut_info(buf, mnt_path);
  32.  
  33. close(fd);
  34. return ret;
  35. }
  36.  
  37. /*
  38. *@brief 从buf中返回最后一组为/mnt/exUDISK为挂载路径
  39. eg:/dev/sda 14.6G 9.6G 5.0G 66% /mnt/exUDISK
  40. *@param 获取的挂载路径
  41. *@return 成功返回0.失败返回-1
  42. */
  43. static int analysis_monut_info(char *buf, char *path)
  44. {
  45. char *info = buf;
  46. char value[128] = {0};
  47. int ret = 1;
  48. // printf("@buf %s", buf);
  49. while(0 != ret)
  50. {
  51. sprintf(path, "%s", value);
  52. memset(value, 0, sizeof(value));
  53. ret = get_info_value(&info, value);
  54. }
  55. return ret;
  56. }
  57.  
  58. /*
  59. *@brief 从buf中返回用空格和换行为分隔符的部分。并向前移动地址位置。
  60. *@param info 查找的源,value 返回的字符串
  61. *@return 成功返回0.失败返回-1
  62. */
  63. static int get_info_value(char **info, char *value)
  64. {
  65. char *vernier = 0;
  66. int i = 0;
  67. vernier = *info;
  68. while((*vernier == ' ') || (*vernier == '\n'))
  69. {
  70. vernier++;
  71. }
  72. for(i = 0; *vernier != 32 && *vernier != '\n' && *vernier != '\0' && i < 64;i++)
  73. {
  74. value[i] = *vernier;
  75. vernier++;
  76. }
  77. if(*vernier == '\0')
  78. {
  79. return 0;
  80. }
  81. *info = vernier;
  82. return - 1;
  83. }

Linux c 检测U盘挂载路径方法的更多相关文章

  1. LINUX下的U盘挂载

    linux下如果没有图形界面的情况下就要我们自己熟悉命令来挂载U盘,下面给大家详细描述下U盘的挂载过程. 1. 插入U盘 2. #sudo fdisk –l 查看所挂载盘符名称如下图,假设盘符名称为s ...

  2. Linux 查看进程运行的完整路径方法

    通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等. 这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一 ...

  3. Linux查看进程运行的完整路径方法

    通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等.这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一个 ...

  4. 将u盘的文件复制到虚拟机上的linux系统上面—》文件挂载(文字+图解)

    虚拟机中操作系统.CentOs(无图形界面) 没有图形界面的linux,我也没有配置网络,现在需要把文件复制到linux系统上面,我这里就使用了u盘挂载的方式,获得了U盘中的文件. 1.VMware中 ...

  5. Kali Linux下破解WIFI密码挂载usb无线网卡的方法

    Kali Linux下破解WIFI密码挂载usb无线网卡的方法 时间:2014-10-12    来源:服务器之家    投稿:root 首先我要说的是,wifi密码的破解不是想象中的那么容易,目前还 ...

  6. 截取linux文件存储路径方法

    1.截取linux文件存储路径方法 package com.tydic.eshop.action.freemarker; public class dddd { public static void ...

  7. linux(CentOS)磁盘挂载数据盘

    linux(CentOS)磁盘挂载数据盘:第一步:查看是否存在需要挂载的磁盘: sudo fdisk -l 第二步:为需要挂载的磁盘创建分区: sudo fdisk /dev/vdb 执行中:依次选择 ...

  8. linux 从百度网盘下载文件的方法

    linux 从百度网盘下载文件的方法 发表于2015 年 月 日由shenwang 方法1.wget wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括 ...

  9. 最小LINUX系统下U盘的挂载及卸载

    U盘挂载命令U盘插入的时候会显示启动信息,启动信息中sda: sda1指U盘的设备名为sda1dev设备目录下有一个sda1设备文件,此设备文件就是我们插入的U盘,我们将这个设备文件挂载到Linux系 ...

  10. Linux系列(21) - 光盘、U盘挂载

    挂载光盘 mount命令.umount命令 step-1 建立挂载点 原理:相当于建立盘符,建个目录读取光盘内容 命令:[root@localhost ~]# mkdir /mnt/cdrom/ 备注 ...

随机推荐

  1. Windows Server 2012部署遇到的问题

    一.安装IIS提示"服务器管理器WinRM插件可能已损坏或丢失" 解决方案: 1.开启WinRM服务,添加ip监听 在服务中查看WinRM服务是否开启,如果没有开启则把该服务开启, ...

  2. 什么是齐博/齐博CMS之X1?

    齐博x1:核心+模块+插件+钩子的理念把系统的灵活性及拓展性做到了极致!!!齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场. ...

  3. virtualenv +virtualenvwrapper

    一.虚拟环境virtualenv 1.安装:pip3 install virtualenv 2.创建虚拟环境:virtualenv venv #venv为虚拟环境目录名,目录名自定义 #virtual ...

  4. photoshop 2021 for mac安装教程,亲测可用!!!

    小编分享下photoshop cc 2021 for mac 安装教程,适配M1芯片,让大家完美使用ps2021,畅享所有新功能Adobe Photoshop2021(简称PS) 新版本主要增加了Ne ...

  5. 一键生成CA证书

    create_cert () { cd /etc/openvpn/easy-rsa ./easyrsa gen-req ${NAME} nopass <<EOF EOF cd /etc/o ...

  6. Https Webservice接口的免证书调用

    目录 前言 思路 方案 Axis调用 HttpClient调用 参考链接 前言 在调用https协议的Webservice接口时,如果没有做证书验证,一般会报javax.net.ssl.SSLHand ...

  7. Django更换数据库和迁移数据方案

    前言 双十一光顾着买东西都没怎么写文章,现在笔记里还有十几篇半成品文章没写完- 今天来分享一下 Django 项目切换数据库和迁移数据的方案,网络上找到的文章方法不一,且使用中容易遇到各类报错,本文根 ...

  8. 在 Solidity 中 ++i 为什么比 i++ 更省 Gas?

    前言 作为一个初学者,"在 Solidity 中 ++i 为什么比 i++ 更省 Gas?" 这个问题始终在每个寂静的深夜困扰着我.也曾在网上搜索过相关问题,但没有得到根本性的解答 ...

  9. .NET周报【11月第3期 2022-11-22】

    国内文章 .NET Conf China 2022 第一批讲师阵容大揭秘!整个期待了! https://mp.weixin.qq.com/s/4p89hhBPw6qv-0OB_T_TOg 目光看过来 ...

  10. 教你用JavaScript完成轮播图

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个轮播图.图片每3秒自动轮换,也可以点击左右按键轮播图片,当图片到达最左端或最右端时, ...