我对挂载函数有疑问,我想挂载一个ntfs磁盘,并且我已经准备好ntfs-3g驱动程序,我可以使用ntfs-3g命令或shell中的挂载命令挂载这个磁盘,但是当我尝试使用mount("/dev/sda1", "/mnt/sda1","ntfs-3g",MS_MGC_VAL,NULL);时,它总是失败的。
我能做什么?我不想使用" system ()“,因为在我的系统中,它总是返回-1(我不知道为什么,愚蠢的蒲箱灰?),我需要状态来识别它成功与否。
请帮帮忙,谢谢!
发布于 2014-09-29 18:58:25
我已经研究这个问题有几个小时了,我相信现在发生的是对这些事情是如何工作的错误理解。
ntfs-3g是一个熔断器驱动程序。安装FUSE文件系统的唯一正确方法是使用适当的挂载程序。(ntfs-3g或/sbin/mount.ntfs在我的系统上)。这是因为除了需要内核资源外,还必须运行用户空间程序。知道如何解释磁盘格式的是用户空间程序,而不是事物的内核端。
正常的系统挂载程序指出,它必须调用其他东西才能实现挂载,并自动推断它需要/sbin/mount.ntfs并为您调用它。底层挂载系统调用没有这样的功能。它只知道它不能挂载给定的文件系统,并且失败。
所以,你有两个选择:
发布于 2012-08-31 10:49:35
您可以尝试以下解决方案:
int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data);
内核支持的filesystemtype参数的值在/proc/filesystems中列出。当加载适当的模块时,进一步的类型将变得可见。检查是否列出了ntfs-3g。errno值,并根据errno描述修复问题。来源:man -s 2 mount
这很容易。只需在源代码中添加#include "errno.h"即可。然后,您可以从挂载的手册页验证错误挂载正在进入的是什么。下面是一个让您开始的示例代码://系统调用if( retval != 0){ printf("ERROR:%d=%s\n",errno,strerror(errno));}
data的字符串挂载data参数如果你还需要帮助,请告诉我。
https://stackoverflow.com/questions/12212998
复制相似问题