【问题标题】:Mount a device with ntfs-3g in c application在 c 应用程序中使用 ntfs-3g 挂载设备
【发布时间】:2012-11-04 01:30:37
【问题描述】:

在 C 应用程序中使用 ntfs-3g 驱动程序安装设备的好方法是什么?

为了挂载其他文件系统,我将使用libmount,但是如何使用 ntfs-3g?我没有找到 libntfs-3g 的任何文档。

是的,我可以使用 system() 来解决这个问题,但它似乎不是很好的解决方案。

还有关于在安装之前检测设备文件系统的问题:虽然我要通过所有相关文件系统循环安装设备,直到它成功,但可能存在更好的方法?

【问题讨论】:

  • 为什么不想使用 mount?它非常可靠且易于调试,如果失败,您只需打印命令字符串并手动运行即可修复它。
  • 是的,它工作正常,但我不喜欢在 C 代码中使用 system(),反正如果我没有找到其他好的方法,我会使用它。

标签: c linux mount


【解决方案1】:

检查 Linux 特定的 mount() 系统调用。

它允许你挂载,但你需要指定文件系统。

要检测文件系统类型,您可以从设备的开头读取一些数据,并使用 libmagic 来了解文件系统类型。 函数 magic_buffer() 可以帮助你。 我不确定你需要从设备读取多少字节,你可以做一些测试,但我认为 128 字节应该绰绰有余。

【讨论】:

  • 是的,我知道 mount() 并通过 libmount 使用它,一切正常,但 ntfs-3g 有问题,因为它通过 fuse 工作。这意味着我必须为 fuse 使用任何 lib 或为 ntfs-3g 使用 lib,但我没有找到有关如何使用 libntfs-3g 的任何信息。并感谢有关检测的信息,实际上我决定使用此 blkid/blkid.h
  • 保险丝有什么问题?
  • 我不认为我只能使用fuse的lib来挂载ntfs-3g,看来我需要阅读libntfs-3g的源代码来了解如何使用这个lib。
猜你喜欢
  • 2012-08-31
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 2019-09-02
相关资源
最近更新 更多