Новая реализация библиотечной функции и вызов старой реализации в этом - PullRequest
3 голосов
/ 23 июня 2011

Я хочу реализовать некоторые пользовательские библиотечные функции в Linux.Например, я хочу реализовать свои собственные pthread_mutex_lock , pthread_mutex_unlock , malloc и free .Я прочитал LD_PRELOAD можно использовать для использования ваших собственных пользовательских функций, хотя я не вдавался в подробности.

Но у меня есть один вопрос, я также хочу использовать оригинальные функции в моих новых реализациях.Каков будет трюк для этого, так как оба будут иметь одинаковые имена?

1 Ответ

3 голосов
/ 23 июня 2011

Вы можете использовать функцию dlopen, чтобы открыть заменяемую библиотеку (или использовать RTLD_NEXT, если она уже загружена, см. Комментарии), а затем использовать функцию dlsym, чтобы найти адрес функции в той библиотеке, которую вы хочу позвонить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...