LD_PRELOAD 后如何卸载库?

How do I unload a library after it is LD_PRELOAD'ed?

我们 LD_PRELOAD 一个用于某些功能的库,如果我想禁用该功能并卸载该库,有没有办法做到这一点?我 不想 使用 RTLD,它必须是 LD_PRELOAD 所以不要建议 dlsym。

另一个用例是 LD_PRELOAD 进程创建的任何子进程也具有我不想要的相同环境。有什么办法可以做到吗?

您可以将变量重置为空字符串。

在 C 中你可以这样做:

int ret = unsetenv("LD_PRELOAD")

此外,您可以使用 setenv

从代码内部设置它