我正在编写(又一个)文件管理器(为了学习东西:)并且有一个愚蠢/愚蠢的 block 。
在 Linux 上,要枚举可以包含文件的存储设备,我认为最好的方法是解析/proc/partitions 文件的内容并提取/dev/sda* 条目。 (对吗?)但是,如何将/dev/sda* 映射到我可以通过编程方式探索以获取目录内容的内容?我计划使用 boost/filesystem,但由于我无法 ls/dev/sda 我认为我无法使用 boost 来迭代它。
概要:如何将/dev/sda* 转换为我可以“ls”的内容
最佳答案
我认为您误解了 /dev/sd*
对于程序的实际含义。它们是设备而不是目录。您可以使用 mount 命令告诉操作系统将设备“解释”为文件系统,并将其附加到某个位置(根目录或其他位置)。正是这一步使其成为文件系统上某处的“目录”。因此,除了原始 I/O 命令(您不想这样做)之外,安装文件系统,然后尝试探索它。
这实际上有点像打开文件。当您执行此操作时,操作系统会为您的程序提供一个字节流,您可以通过该字节流随机访问文件。但在磁盘上,该文件实际上可能分散在整个硬盘驱动器(或任何设备)上。但操作系统正在将其“制作”成“良好”的格式,以便您透明地处理。访问目录/文件列表时,磁盘本身也是如此。
我希望我的示例能够更清楚地说明为什么您尝试做的事情并不像您想象的那么简单。
关于c++ - linux——从/proc/partitions内容获取我可以的东西 'ls',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198855/