gpt4 book ai didi

c - 使用C直接读/写磁盘

转载 作者:行者123 更新时间:2023-11-30 17:10:49 24 4
gpt4 key购买 nike

我知道如何使用 FILE 指针在 C 中从文件读取/写入文件。但是我想更进一步,学习如何直接读取/写入磁盘分区。另外,写入和写入有什么区别到文件和磁盘。我还可以操作磁盘上已有的内容,例如视频、图像等。

我在 Linux 14.04 上使用 C 语言,并使用 gcc 作为编译器。

TIA。

最佳答案

UNIX/Linux 系统的优点之一是您想要访问的几乎所有内容都是文件。

Linux 有一个 /dev 文件系统,其中包含实际上是 block 设备和字符设备的特殊文件。其中包括原始磁盘分区。如果运行df -k,您将看到与当前安装的文件系统关联的设备。

在我的一个系统上,此命令输出以下内容:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/vg0-root 1040280 427008 560844 44% /
/dev/mapper/vg0-var 4161216 3275900 675604 83% /var
/dev/mapper/vg0-usr 30559268 14297456 14721716 50% /usr
/dev/mapper/vg0-prod 30526500 11905152 17082892 42% /prod
/dev/mapper/vg0-tmp 4161216 175168 3776336 5% /tmp
/dev/sda1 256681 28231 215196 12% /boot

从这个例子中,我们可以看到/var文件系统与特殊文件/dev/mapper/vg0-var相关联。因此,如果您要打开该文件,您将可以访问原始文件系统。然后您需要准确了解文件系统的布局才能找到您要查找的内容。

请注意,为了执行此操作,您需要 root 访问权限。

警告!

以这种方式访问​​已安装的文件系统通常是一个坏主意。操作系统缓存对文件系统的写入,因此磁盘上的物理内容可能与操作系统所说的不匹配。以这种方式直接写入文件系统可能会损坏文件系统,因为您绕过了操作系统的缓存机制。

关于c - 使用C直接读/写磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32695577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com