5

给定 mmap 的构造函数声明:

class mmap.mmap(fileno, length[, flags[, prot[, access[, offset]]]])

如何指定访问和偏移量?

该文档指出:

可以指定 access 来代替 flags 和 prot 作为可选的关键字参数。同时指定标志、prot 和访问是错误的。有关如何使用此参数的信息,请参阅上面的访问说明。

所以我试着做类似的事情

  • mmap.mmap(file_no, length, offset, access=mmap.ACCESS_COPY)
  • mmap.mmap(file_no, length, access=mmap.ACCESS_COPY, offset=offset)

    m = mmap.mmap(f.fileno(), 4, access=mmap.ACCESS_COPY, offset=2)
    Traceback(最近一次调用最后一次):
    文件“”,第 1 行,在 mmap.error:[Errno 22] 无效参数

  • mmap.mmap(file_no, length, mmap.ACCESS_COPY, offset)

但我无法让它工作。为什么这让我如此困惑?

4

2 回答 2

3

此错误与访问无关。如 文档所述,偏移量必须是mmap.PAGESIZEor的倍数mmap.ALLOCATIONGRANULARITY

于 2012-06-07T14:20:29.860 回答
1

尝试:

m = mmap.mmap(f.fileno(), 4, access=mmap.ACCESS_COPY, offset=2 * mmap.ALLOCATIONGRANULARITY)
于 2012-06-07T14:23:36.880 回答