问题描述
不,我在任何地方都没有大于18艾字节的文件。我正在尝试从/ proc / self / mem阅读。当我在Python中执行以下操作时:
f.seek(0xfe00001de000007f)
我得到:
ValueError: cannot fit 'int' into an offset-sized integer
我还尝试使用os.lseek
,但出现了稍微不同的错误:
OverflowError: Python int too large to convert to C long
最后,我尝试通过两个步骤进行搜索:
offset = 0xfe00001de000007f
f.seek(offset >> 1)
f.seek(offset >> 1,1) #seek relative to current position
编辑:上面的代码中实际上存在错误,因为
offset >> 1
丢弃了最低有效位。在此示例中的确为1。因此,如果有效,它实际上将寻求0xfe00001de000007e。但是,这不是我遇到的错误的原因。我知道这一点是因为我尝试查找0x7ffffffffffffffe,然后通过每个1字节进行两次相对查找。第一个起作用,第二个给出错误。
但随后我得到:
OSError: [Errno 0] Error
在遇到该错误后,我尝试执行f.tell()
,但它再次给出了相同的错误。
进一步的研究似乎表明Linux仅不支持超过0x7fffffffffffffffff的文件偏移量。所以我的问题是,如何通过procfs访问这部分64位地址空间?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)