c++ - linux——从/proc/partitions内容获取我可以的东西 'ls'

标签 c++ linux filesystems

我正在编写(又一个)文件管理器(为了学习东西:)并且有一个愚蠢/愚蠢的 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/

相关文章:

C++ FileIO Copy -VS- System("cp file1.x file2.x)

c - 如何在 c 中的两个程序之间共享库

linux - 针对 iMX.53 交叉编译的 DirectFB - 启动时崩溃

比较c中的2个字符数组

c++ - 从 void* 转换为 Base* 是任何 Derived<I>*

java - Java默认路径在哪里设置?

php - 写入文件系统数据库中的现有文件

c++ - 模板类的模板友元函数

c++ - 从 txt 文件中读取随机行,然后在 QT SDK 中对其进行修剪

c++ - Tensorflow 对象检测 API 是否有 C++ 包装器?