Mat*_*hew 9 c++ fstream input hard-drive output
Linux中用于C++中的低级磁盘操作有哪些方法?我试图在磁盘上编写自己的数据管理器.例如,我想在Linux环境中创建一个C++程序,在磁盘上分配一定量(连续),然后自由地允许我读/写该数据块.我不认为我想使用该标准,fstream::open因为该文件由操作系统管理,我可能无法在磁盘上获得连续的部分.
谢谢.
通常,Linux中用户程序1的 "低级"磁盘操作涉及打开磁盘专用设备.在我的计算机上,这些被称为"/ dev/sda"或"/ dev/sda4"或甚至"/ dev/disk/by-uuid/2a5150b4-71cb-11e1-b2fe-3b0d270b4e16".
您应该非常谨慎地选择设备文件.使用它写入系统分区不是一个好主意.此外,在大多数情况下,打开设备文件需要root访问权限(出于显而易见的原因).
是否使用的问题fstream是正交的.您可以使用std::fstream,fopen甚至open打开设备.然后使用与您执行的打开匹配的任何读取操作.
对于您的具体示例,您可能会重新考虑是否需要此功能.引用维基百科,反过来引用Linux系统管理员指南:
但是,正如"Linux系统管理员指南"所述,"现代Linux文件系统通过将文件中的所有块保持在一起,即使它们不能存储在连续的扇区中,也能将碎片保持在最低限度.某些文件系统,如ext3,有效地分配最接近文件中其他块的空闲块.因此,不必担心Linux系统中的碎片."
1由于您提到C++,我假设您正在编写用户程序而不是设备驱动程序.真正的"低级"磁盘操作仅在内核中可用.事实上,如果您想要编写设备驱动程序,请重新提出您的问题以明确说明.
| 归档时间: |
|
| 查看次数: |
2507 次 |
| 最近记录: |