Предположим, я хочу полностью взять на себя системный вызов open (), возможно, чтобы обернуть фактический системный вызов и выполнить некоторую регистрацию. Один из способов сделать это - использовать LD_PRELOAD для загрузки (созданной пользователем) библиотеки общих объектов, которая принимает на себя точку входа open ().
Пользовательская процедура open () затем получает указатель на функцию glibc open ()
с помощью dlsym ()
ее и вызова.
Однако предложенное выше решение является динамическим. Предположим, я хочу статически связать свою собственную оболочку open ()
. Как бы я это сделал? Я предполагаю, что механизм тот же, но я также предполагаю, что будет конфликт символов между пользовательским open ()
и libc open ()
.
Пожалуйста, поделитесь любые другие методы для достижения той же цели.