如何使用gcc / linux读取C ++中的硬盘扇区?是否有可以使用的标准库或必须下载的东西?在Windows中,我可以使用CreateFile(...)访问原始磁盘扇区,但我不知道如何在Linux中进行操作。
我在Ubuntu LTS 10.4上使用GCC。谢谢你的帮助。
答案 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命令将磁盘扇区转储到文件中并读取生成的文件