我的应用程序应该挂载和检查插入 USB 插槽的任何 pendrive 的内容。 问题是,某些用户可能正在使用针对标准“vfat”以外的其他文件系统格式化的 pendrives。 标准
mount /dev/sda1 /mnt/pendrive -t auto
足以满足我的需求 - 它可以工作,并且将使用内核可读的任何文件系统。
问题是我必须从应用程序内部执行此操作,并且当存在“自然”C 解决方案时,我宁愿避免调用 system()
和 shell 命令。
#include <sys/mount.h>
...
result = mount("/dev/sda1", "/mnt/pendrive", "vfat" ,0, NULL);
正常工作。但是,如果我将 "vfat"
替换为 "auto"
或 NULL
,则不会安装任何内容。
当我检查 busybox 挂载的来源时,如果提供“auto”或未提供文件系统类型,它似乎在 mount() 调用中将文件系统设置为 NULL。但是这个技巧似乎对我不起作用。我错过了什么?有没有一些相对简单的方法可以做到这一点?
最佳答案
内核无法自动检测文件系统,所以你必须自己做。
busybox 实际上所做的只是遍历所有相关的文件系统,从/proc/filesystems 解析,然后调用 mount() 直到成功(参见行 1898)
关于c - mount() 上的自动检测文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397813/