【发布时间】:2014-11-13 00:16:07
【问题描述】:
是否可以在 c 程序或终端 (linux) 中通过地址访问文件?我知道这听起来很奇怪,实际上对我来说也是如此,但我只是在尝试。
例如替换
FILE * f = fopen("myfile.txt","r")
通过一些绝对令人惊叹的东西
int fd = open(&0x545f6f5,"r")
或者 echo &0x545f6f5 会抓取相关文件的一部分(需要一个长度,所以更像 echo &0x545f6f5 20 来读取地址旁边的 20 个字节)?
我知道 mmap,但我的问题更像是实验。
嗯,总体情况是:可以通过地址(理想情况下是长度)访问 linux 文件系统上文件的任何部分吗?
更新:
说我的分区 id /dev/sda1,我想用地址而不是名称访问原始内存值(可读或不可读)。 如果我寻找地址 &0x545f6f5 并且它恰好是偏移量为 64 的 myfile.txt,我将读取该位置的字节。我希望它更清楚:)
【问题讨论】:
-
在您定义地址的含义之前,这没有意义 - 0x545f6f5 应该是什么意思?内存地址?文件中的字节偏移量?硬盘上的物理位置?
-
我认为您需要了解硬盘驱动器和文件系统的工作原理。查看en.wikipedia.org/wiki/Cylinder-head-sector。
-
@seanmk CHS 寻址今天不再使用。今天的硬盘使用 LBA 寻址,如果您要使用基于 CHS 的磁盘,Linux 会为您抽象出这些差异。
-
如果确实存在这样的功能会解决什么问题?
-
@jxh :它本身并没有解决问题,但它只是在玩系统,并测试新的可能性