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