思路:

  1、执行df -h 找到 带mnt的行。将结果存入一个文件中。

  system("df -h |grep mnt >./extendevinfo.txt");  也可以直接popen用管道打开,感觉
效率可能会更高一些。

2、解析文件中最后/mnt/XXX部分即为挂载路径。(具体看自己内核挂载路径,可能会有差异)

例如本人系统挂载U盘后的df -h |grep mnt,结果如下:

eg:/dev/sda                 14.6G      9.6G      5.0G  66% /mnt/exUDISK

  3、解析到空格最后的内容就是U盘的挂载路径了:/mnt/exUDISK。

/*
*@brief 获取U盘挂载路径
*@param 获取的挂载路径
*@return 成功返回0.失败返回-1
*/
static int GetUDiskMountPath(char * mnt_path)
{
int fd = 0, ret = 0, rdsize = 0;
char buf[1024] = {0};
fd = open("./extendevinfo.txt", O_CREAT | O_RDWR | O_NONBLOCK | O_TRUNC, 0777);
if(fd < 0)
{
printf("open error\n");
return - 1;
}
ret = system("df -h |grep mnt >./extendevinfo.txt");
if(ret)
{
// printf("system error\n");
return - 1;
} rdsize = read(fd, buf, sizeof(buf));
// printf("buf = %s\n", buf);
if(rdsize < 2)
{
printf("read error\n");
return - 1;
} ret = analysis_monut_info(buf, mnt_path); close(fd);
return ret;
} /*
*@brief 从buf中返回最后一组为/mnt/exUDISK为挂载路径
eg:/dev/sda 14.6G 9.6G 5.0G 66% /mnt/exUDISK
*@param 获取的挂载路径
*@return 成功返回0.失败返回-1
*/
static int analysis_monut_info(char *buf, char *path)
{
char *info = buf;
char value[128] = {0};
int ret = 1;
// printf("@buf %s", buf);
while(0 != ret)
{
sprintf(path, "%s", value);
memset(value, 0, sizeof(value));
ret = get_info_value(&info, value);
}
return ret;
} /*
*@brief 从buf中返回用空格和换行为分隔符的部分。并向前移动地址位置。
*@param info 查找的源,value 返回的字符串
*@return 成功返回0.失败返回-1
*/
static int get_info_value(char **info, char *value)
{
char *vernier = 0;
int i = 0;
vernier = *info;
while((*vernier == ' ') || (*vernier == '\n'))
{
vernier++;
}
for(i = 0; *vernier != 32 && *vernier != '\n' && *vernier != '\0' && i < 64;i++)
{
value[i] = *vernier;
vernier++;
}
if(*vernier == '\0')
{
return 0;
}
*info = vernier;
return - 1;
}

Linux c 获取U盘挂载路径的更多相关文章

  1. Android获取全部存储卡挂载路径

    近期因项目需求.须要在存储卡查找文件,经測试发现部分手机挂载路径查找不到,这里分享一个有效的方法. /** * 获取全部存储卡挂载路径 * @return */ public static List& ...

  2. LINUX下的U盘挂载

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

  3. 软件素材---linux C语言:linux下获取可执行文件的绝对路径--getcwd函数

    //头文件:#include <unistd.h> //定义函数:char * getcwd(char * buf, size_t size); //函数说明:getcwd()会将当前的工 ...

  4. linux下插入U盘自动挂载后,用C获取其挂载点(cat /proc/mounts)

    现在已经能够通过libudev获取U盘插入时它的节点名(通过函数udev_device_get_devnode()),是/dev/sdb1 我现在的做法是读取/proc/mounts文件,找到有/de ...

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

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

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

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

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

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

  8. Linux下获取当前程序的绝对路径

    在Linux开发应用时,我们常常需要在程序中获取当前程序绝对路径,我们可以通过readlink读取符号链接/proc/self/exe进行获取,这个符号链接代表当前程序,它的源路径就是当前程序的绝对路 ...

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

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

  10. 『学了就忘』Linux基础命令 — 39、挂载U盘和挂载NTFS分区

    目录 1.在Linux系统中挂载U盘 (1)插入U盘 (2)查询U盘设备文件名 (3)挂载U盘 (4)U盘中的中文乱码 (5)U盘卸载 2.在Linux系统中挂载NTFS分区 (1)Linux的驱动加 ...

随机推荐

  1. HTML基础知识(3)浮动、塌陷问题

    1.浮动 1.1 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...

  2. golang中的一些实用功能

    0.1.索引 https://waterflow.link/articles/1663921524839 通过使用一些通用代码来节省时间,而无需单独实现它们.以下是一些开发中经常会用到的函数实现的列表 ...

  3. 如何规范App广告的隐私获取,让用户拥有更多知情权?

    随着互联网的不断普及,越来越多老百姓使用智能设备触达互联网.但用户经常发现自己无意间提到的东西,打开App就收到相关产品的广告推送,甚至有人怀疑手机App是通过麦克风来窃取自己平时聊天信息中的关键词进 ...

  4. C# String.Empty和""的区别

    个人观点 Empty其实是string类中的一个静态的只读字段,因为是静态成员变量,所以String.Empty是在设计String类的时候就已经在内存上分配好了空间,故在使用Empty这个变量的时候 ...

  5. .NET6打包部署到Windows Service

    1.安装Nuget包 安装以下nuget包支持windows service <PackageReference Include="Microsoft.AspNetCore.Hosti ...

  6. Mybatis笔记02-----MyBatis的核心配置文件以及模糊查询的实现

    认识MyBatis核心配置文件mybatis-config.xml 这个文件名是随意可以起,但为了规范一般都命名为mybatis-config.xml:配置文件与MyBatis的行为和属性信息息息相关 ...

  7. web安全学习(sql注入1)

    web安全学习(sql注入1) 一.简介 sql语句就是数据库语句,而sql注入就是用户将自己构造的恶意sql语句提交,然后服务器执行提交的危险语句.sql注入可能造成信息泄露以及服务器被控制等危害. ...

  8. QQ登录

    public function login(){ $urlencode = urlencode("http://www.zhangxuhui.com/index/Index/callback ...

  9. Go实现常用软件设计模式三:生成器模式

    目录: 举个栗子 概念介绍 使用场景 1.举个栗子 2.概念介绍 使用一个中间件来帮助我们填充创建对象参数 优点: 将创建逻辑集中在一起 复用了不同参数创建逻辑 缺点: 新增生成器类 3.使用场景 m ...

  10. xshell调整字体大小

    1. 进入设置 %default%:默认对全部终端生效 如果想对单一终端单独设置,可先进入会话管理,针对单一会话单独调整 2. 点击外观配置,修改字体大小