我想直接从 C 程序访问整个硬盘。上面没有 FS,也永远不会是一个。
我只想打开/dev/sda(例如)并在磁盘的 block /扇区级别执行 I/O。
我打算在Linux环境下写一些学习C编程的程序(我会C语言、Python、Perl和Java),但对Linux环境缺乏信心。
为了我的学习目的,我正在考虑使用 kyoto-cabinet 并将与计算的哈希对应的值直接保存到硬盘的“ block /扇区”中,记录对:“哈希, block /扇区引用"到 kyoto-cabinet 哈希数据库文件中。
我不知道使用标准 C I/O 函数是否可行,否则我必须编写“设备驱动程序”或类似的东西...
最佳答案
如其他地方所述,在 *NIX 系统下,像 /dev/sda
这样的 block 设备可以作为普通文件访问。请注意,如果文件系统是从设备挂载的,则将其作为文件打开以进行写入将失败。
如果你想玩 block 设备,我建议先使用 loop device
,它将普通文件呈现为 block 设备。例如:
dd if=/dev/zero of=./loop_file_10MB bs=1024 count=10K
losetup /dev/loop0 $PWD/loop_file_10MB
在那之后,/dev/loop0
就像一个 block 设备一样,但所有写入的信息都将存储在文件中。
关于c - 在 Linux 上从 C 程序直接访问没有 FS 的硬盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3520459/