我想知道是否可以编写一个可以访问外部文件系统的应用程序,但不需要从操作系统支持该文件系统。例如,我想用C语言编写一个在Mac OS X上运行的应用程序,它可以从ext2 / ext3格式的磁盘中浏览/复制文件。当然,你必须通过应用程序进行所有传输(不是通过使用cp或Finder的系统),但这对我的目的来说是可以的。这可能吗?
答案 0 :(得分:5)
有一些用户空间库允许您访问文件系统。
Linux-NTFS库(libntfs)允许您访问NTFS文件系统,并且有ntfsfix
等用户空间程序可以对文件系统执行操作。
E2fsprogs也是如此。
正如Basile所提到的,Mtools是另一个提供FAT分区访问权限的工具。
甚至有一个程序可以完全满足您在Windows上的需求。它被称为ext2explore,允许您从Windows访问ext2分区。
答案 1 :(得分:3)
有可能。例如,GNU mtools实用程序正在为MS-DOS FAT文件系统执行此操作(假设有一种访问原始设备或分区的方法)。
但是,内核中的文件系统通常都经过了很好的测试和优化。
答案 2 :(得分:0)
是和否。对于常规用户,通常无法访问应用程序,因为对块设备的访问仅限于root用户。每个块设备都应该为所需的块设备提供读/写操作。这最多需要服务器/客户端方法,在服务器上启动服务并配置为按块设备方式提供权限。
您可以使用MacFUSE实现更简单的替代方案。
看这里:
http://code.google.com/p/macfuse/
http://groups.google.com/group/macfuse?pli=1
MacFuse项目似乎不再适用,但可以为您的项目提供一个起点。
以root chmod 666 /dev/diskN
答案 3 :(得分:0)
您可以从应用程序中劫持系统调用和库调用,然后将读/写重定向到KV存储或分布式数据库层等任何内容(使用您不支持的“虚拟设备”的常规调用)。
然后,可能性是无限的,因为当有人要求它们时,你不必到达物理/虚拟设备(解决特权问题)。