gpt4 book ai didi

c - 如何在代码中使用mount函数来挂载ntfs-3g?

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:56 25 4
gpt4 key购买 nike

我对挂载功能有疑问,我想挂载一个 ntfs 磁盘,并且我已经准备好 ntfs-3g 驱动程序,我可以使用 ntfs-3g 命令或 shell 中的 mount 命令挂载这个磁盘,但是当我尝试使用 mount("/dev/sda1", "/mnt/sda1","ntfs-3g",MS_MGC_VAL,NULL);它总是失败。

我能做什么?我不想使用“System()”,因为在我的系统中它总是返回 -1(我不知道为什么,愚蠢的 busybox 灰?),我需要状态来确定它是否成功安装。

请帮忙,谢谢!!!!!!!!!

最佳答案

我已经研究这个问题几个小时了,我相信正在发生的事情是对这些事情如何运作的误解。

  1. 挂载程序(在我的 Centos 6.5 系统上是/bin/mount)不是挂载系统调用的简单包装器。事实上,它非常聪明地弄清楚它正在处理什么,以及尝试安装什么东西。

  2. mount 系统调用仅适用于作为内核模块的文件系统驱动程序。您会在/etc/filesystems 或/proc/filesystems 中找到的内容。

ntfs-3g 是一个 FUSE司机。挂载 FUSE 文件系统的唯一正确方法是使用合适的挂载程序。 (在我的系统上是 ntfs-3g 或/sbin/mount.ntfs)。那是因为除了需要内核资源之外,还必须运行用户空间程序。知道如何解释磁盘格式的是用户空间程序,而不是内核端。

正常的系统挂载程序发现它必须调用其他东西来进行挂载,并自动推断它需要/sbin/mount.ntfs 并为您调用它。底层挂载系统调用没有这样的功能。它只知道它无法挂载给定的文件系统并失败。

所以,你有两个选择:

  1. 修复系统上 mount 命令的任何错误。您可能想调查是否有实际的“挂载”二进制文件。如果这样做,直接调用它可能会有所帮助。

  2. 如果您知道该文件将被格式化为 ntfs,而您没有真正的挂载程序,那么您可能想尝试直接调用 ntfs-3g。

关于c - 如何在代码中使用mount函数来挂载ntfs-3g?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12212998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com