调用过程的符号查找?

Symbol lookup for the calling process?

大家好!

所以 Linux 有 dlopen / dlsym / dlclose / 。 .. 函数,但我想知道我的程序是否有办法获取它自己的 运行 进程的某些符号的句柄。

基本上与 dlsym 类似,但在调用它的进程中搜索符号。 有这样的事吗?这可能吗?加分项:Windows有这样的东西吗?

Edit - 进一步说明:假设我有一个全局变量 foo,大概驻留在我程序的 bss 或数据段中。 foo 的存在在编译时对于整个程序来说是完全未知的。在运行时,我想查询某处是否可能有一个名为“foo”的全局符号,如果是,请获取它在内存中的位置。

我需要能够构建符号 table,就像链接器在构建共享库时所做的那样。我想这是最大的问题。

如果我有选择的话,我有什么选择?

干杯!

根据http://man7.org/linux/man-pages/man3/dlopen.3.html

If filename is NULL, then the returned handle is for the main program.

即您可以通过传递 NULL 作为名称来 dlopen 自己。