向大家致以诚挚的问候!
所以Linux有dlopen/dlsym/dlclose/...功能,但我想知道是否有办法让我的程序获取其自身正在运行的进程的某些符号的句柄。
基本上与 dlsym 类似,但在调用它的进程中搜索符号。 有这样的事吗?这可能吗?加分项:Windows 有这样的东西吗?
编辑 - 进一步说明:假设我有一个全局变量foo,大概位于程序的 bss 或数据段中。在编译时,整个程序完全不知道 foo 的存在。在运行时,我想查询某个地方是否有一个名为“foo”的全局符号,如果有,则获取它在内存中的位置。
我需要能够构建一个符号表,就像链接器在构建共享库时所做的那样。我想这是最大的问题。
如果我有选择的话,我有什么选择?
干杯!
最佳答案
根据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
。
关于c - 调用进程的符号查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32265371/