【发布时间】:2013-06-26 15:41:29
【问题描述】:
Linux 内核版本 3.2 还具有称为跨内存附加的功能。
这是它的链接。在这方面我无法得到很多帮助。 http://man7.org/linux/man-pages/man2/process_vm_readv.2.html
在语法中,我们需要要写入或读取的远程内存的地址。我的问题是,如果我使用 fork(),我如何获得这个远程内存的地址。
假设我正在使用跨内存附加从父进程向子进程发送一些东西。如何将远程内存的地址从子进程发送到父进程?
【问题讨论】:
-
您可以使用标准的
pipe(2)或从/proc/pid/maps获取映射 -
我可以使用管道将指针从一个进程发送到另一个进程吗? ...
-
您当然可以通过管道发送地址,然后使用
process_vm_*访问该内存。但除非你打算只自己运行代码,否则我建议你只使用常见的 IPC 机制,如pipe、socketpair。 Linux 3.x 不会在未来 2-3 年内部署在任何重要的服务器上,因此您为此开发的任何代码都将无法移植。 -
谢谢...我能做到。再多一点。为什么他们不打算将它部署在严肃的服务器上?这个内核已经存在了很长一段时间了,对吧?
-
因为新软件被认为足够稳定可以部署需要一段时间。对新实现的偏执可能会持续数年。我们仍然停留在 Linux 2.6.28 上,只是因为我们知道它是稳定的并且可以工作。我听说 NASA 刚刚批准将 80386 发射到太空。
标签: c architecture linux-kernel system