如何从库中获取地址信息以在所有进程之间共享?
|
在了解Linux内核第3版中,它说:
我对此感兴趣,想要在C中编写一个小程序来验证,给出两个pid作为输入,例如两个gedit进程,然后从页面帧中获取要共享的地址信息.有谁知道怎么做?从那本书中,我认为来自两个或更多gedit进程的bss段和文本段地址是相同的,这是正确的吗? 最佳答案 你的gedit(或其他)的text和bss部分不是具有相同地址的文本和bss部分,而是libc.so共享库的内容 – 以及两个gedit进程使用的所有其他共享库. 正如引用的文本所说,这允许共享库是一个副本,这通常是共享库的主要好处. bss通常不共享 – 因为这是每个流程数据.在Linux中,运行相同可执行文件的两个进程的文本部分将共享相同的代码. 不幸的是,证明这一点的方法是查看进程内页面的物理映射(进程A中的地址X的页面位于物理地址Y,进程B中的地址X的页面也是物理地址Y),以及据我所知,这并不容易在OS内核内部搞定. (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 同一个Linux程序如何在同时运行的不同进程上多次使用内存地
- ssh – StrictHostKeyChecking不忽略指纹验证
- 如果我捕获SIGSEGV并且信号处理程序导致另一个SIGSEGV会发生
- linux – bash – 从中运行脚本的get目录
- linux – 如何使用busybox和openssl更改脚本中的用户密码?
- linux – POSIX AIO库和回调处理程序
- 是否可以让cmake构建文件(CMakeLists.txt)不在CLion的root中
- LINUX入门:Linux教程之文件管理(目录结构、创建、查看、删
- 什么是Linux堆栈?
- linux – 如何在特定列中grep值小于0.2的行?
