嘿,我想在我的程序中包装一个函数,而不使用LD_PRELOAD。Linux函数重定向
我有两个函数具有相同签名:
void someFunc() {
puts ("someFunc");
}
void someFunc_wrapper() {
puts ("someFunc_wrapper");
}
我想任何函数调用someFunc重定向一起包装函数的调用。 当然,我能做到这一点与定义宏或将包装函数到一个共享库,然后调用这样的程序:
LD_PRELOAD=./mylib.so my_program
不过,我想重定向功能在运行时调用,无需修改程序呼叫。
据我所知,应该可以通过在运行时修改可执行文件的符号表来重定向这些调用。
任何帮助将不胜感激:)
感谢您的回答:) 是的,我可以使用函数指针,这将是最好的方式。 但我真的很想知道如何操作符号表来达到这个目的,因为在很多情况下,包装函数调用会非常有用,无需访问源代码并重新编译应用程序。 :) – TcShadowWalker 2011-06-04 18:21:27