我想知道一种确定指针是否属于mmaped内存页的方法。
StackOverflow上的Apost建议在指针上使用msync()来确定它是否通过但我发现只要指针是页面大小的倍数,msync()就会成功,不管页面是否被mmaped。
我通过宏计算页面的起始地址:

#define align_to_page(addr,pagesize) (addr & ~(pagesize - 1))

请帮帮我,我已经做了很长一段时间了,一直堵在这里提前谢谢:)
背景:
我正在开发Python和Numpy的扩展在某些函数中,它必须区分普通的numpy.ndarray和numpy.memmap,后者是numpy.ndaraay的一个子类,其数据缓冲区由磁盘上的文件支持的mmap()创建。

最佳答案

所有非空进程地址空间都是mmaped。可以使用mmapsyscall,也可以通过brk/sbrksyscalls间接。
您可能需要找到另一种方法来区分numpy数组。
numpy.memmap文档说明,这些数组还有其他属性filenameoffsetmode,可能是您可以使用这些属性来检测数组是否有文件支持。

关于python - 如何确定是否在C中映射了内存页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21829467/

10-11 22:05
查看更多