在Linux上用C ++读取硬盘扇区

时间:2011-09-02 21:35:36

标签: c++ linux

如何使用gcc / linux读取C ++中的硬盘扇区?是否有可以使用的标准库或必须下载的东西?在Windows中,我可以使用CreateFile(...)访问原始磁盘扇区,但我不知道如何在Linux中进行操作。

我在Ubuntu LTS 10.4上使用GCC。谢谢你的帮助。

3 个答案:

答案 0 :(得分:13)

硬盘只是另一个文件(不是“常规文件”,而是“设备文件”,但仍然是文件)。按正常方式打开......

int fdes = open("/dev/sda1", O_RDONLY);
if (fdes < 0)
    err(1, "/dev/sda1");
... do more ...

除非您拥有正确的权限,否则您将收到权限错误。请注意,"/dev/sda1"只是一个示例,它是磁盘sda上的第一个分区,具体路径取决于您的系统。您可以使用mount命令列出装入点,并且可以使用/dev/sda/dev/sdb等访问整个磁盘(而不仅仅是分区)。

您也可以将其作为C ++ fstream或C FILE打开,但我不建议这样做。如果您使用open,您将有更好的时间查找示例代码并获得论坛帮助。

答案 1 :(得分:8)

答案 2 :(得分:1)

您可以使用dd命令将磁盘扇区转储到文件中并读取生成的文件