我想知道是否有采取现有的非共享堆内存并把它转换成共享内存中的任何合理的可移植的方式。用例是一块内存,对我来说太大了,不想将它复制到不必要的地方(即,到一个新的共享内存段中),并且这些内存是由我的控制之外的例程分配的。主要目标是* nix/POSIX,但我也有兴趣知道它是否可以在Windows上完成。有没有办法将非共享堆内存转换为共享内存?主要目标的* nix
1
A
回答
0
您可以尝试使用mmap()与MAP_FIXED标志和你的非共享内存的地址(从堆中分配)。不过,如果你提供mmap()的用自己的指针则受限于根据内存页的大小来排列和大小,因为映射(可以通过的sysconf()请求)仅适用于整个页面。
0
许多*水妖有计划-9的PROCFS允许打开通过检查的/ proc/{PID}/MEM
你告诉其他进程的PID读取进程内存,大小和基址,它可以简单地读取数据(或在其自己的地址空间的mmap区域)
编辑::显然,你不能没有一个打开的/ proc/{} PID/MEM之前的ptrace(),所以这基本是毫无价值的。
在大多数* nixes,ptrace(2)
允许附加到一个进程并读取它的内存。
的ptrace的方法不能在OSX工作,你需要更多的魔法有:
你需要Windows下的功能是什么ReadProcessMemory
。
谷歌搜索“什么是$ OSNAME的ReadProcessMemory”似乎返回全面的结果集。
+0
我在考虑一种比procps或ptrace更加便携/不太暴力的方式,它比IPC更具有调试工具(特别是,只有一个进程可以同时执行一个给定的任务)。我认为我的运气不好。 – michaeljt 2010-08-10 11:50:27
相关问题
- 1. IPC与共享内存的共享内存有什么区别?
- 2. 内存共享
- 3. 转储共享内存
- 4. POSIX共享内存+目录
- 5. 将共享库共享到共享内存
- 6. CUDA共享内存
- 7. C共享内存
- 8. 在共享内存
- 9. RDMA内存共享
- 10. 共享内存段
- 11. Linux共享内存
- 12. 通过共享内存共享指针
- 13. activerecord内存共享缓存
- 14. 共享内存段vs共享内存段
- 15. C++共享内存泄漏,如何清除共享内存?
- 16. CUDA非法内存访问可能'不足'的共享内存
- 17. 使用fork共享堆内存()
- 18. 带有分叉子的共享内存
- 19. 增加共享内存的内存
- 20. 在共享主机Linux帐户上使用共享内存
- 21. cuda中的共享内存
- 22. 共享内存在Unix的
- 23. OpenCL中的共享内存
- 24. DLL中的共享内存
- 25. 共享内存矩阵乘法内核
- 26. 有没有办法在多个网站之间共享内存中的对象?
- 27. 有没有办法在使用MPI的并行过程中共享内存?
- 28. 增强共享内存有效性
- 29. 如何与shm_open共享现有内存?
- 30. shmop/PHP共享内存有多可靠?
重新MAP_FIXED,我认为这一切映射的前身是在地图上的位置,而不是共享内存。 – michaeljt 2010-08-10 15:40:11