繁体   English   中英

将共享 object 加载到 Linux 中的特定进程

[英]Loading shared object to specific processes in Linux

我想将共享的 object 加载到某些进程中,需要满足某些条件

  • 仅加载到特定进程而不是所有进程
  • 它必须在进程代码开始执行之前完成
  • 过程不是我的

在 Linux 上支持此功能的可用方法是什么?

可以用“/etc/ld.so.preload”或“LD_PRELOAD=/my/lib.so”来完成吗? 是否需要 kernel 模块?

LD_PRELOAD可用于加载特定的通用微型库,该库将通过dlopen()服务加载进程所需的任何其他库。 通常,应用程序能够加载插件、查看特定目录并调用dlopen()以获取在其中找到的所有库文件。
您需要在通用库中定义一个入口点,该入口点将在加载时触发。 使用gcc您可以使用构造函数属性定义此入口点:

void __attribute__ ((constructor)) lib_initialize(void);

void lib_initialize(void)
{
  // Look into a specific directory to see if there are libs to
  // load with dlopen()
}

这种机制不需要任何特定的 kernel 模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM