调用过程的符号查找?
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
自己。
大家好!
所以 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
自己。