Мне интересно, насколько это возможно, чтобы конвертировать сокет AF_INET вместо использования AF_UNIX. Причина этого в том, что у меня есть программа, которая откроет TCP-сокет, но который мы не можем изменить. Чтобы уменьшить накладные расходы, мы хотели бы вместо этого связать этот сокет, чтобы вместо него использовать AF_UNIX.Преобразование гнезда AF_INET для использования AF_UNIX через LD_PRELOAD
До сих пор моя идея заключалась в использовании LD_PRELOAD для достижения этого --- перехвата bind() и accept(), однако неясно, как лучше всего это достичь, или даже если это лучший подход.
Пока что bind в bind(), если тип сокета - AF_INET, а его IP/порт - это сокет, который я хочу преобразовать в AF_UNIX, тогда я закрываю sockd здесь и открываю AF_UNIX. Однако, похоже, это вызывает проблемы в accept() - потому что я не уверен, что делать, если sockfd в accept() соответствует той, которую я хочу сказать, чтобы использовать сокет AF_UNIX.
Любая помощь любезно оценена.
Jason
Несмотря на то, что я написал ответ, я нашел этот вопрос плохо подходящим для формата сайта. Я почти проголосовал за то, чтобы закрыть его как «не конструктивный». Проблема в том, что ответ на вопрос «это возможно?». более или менее «да». В будущем я бы предложил задать более прямой вопрос, например вопрос о конкретном аспекте реализации этой оболочки, с которой вы столкнулись. – Celada
Спасибо, Селада. Теперь я изменил вопрос, чтобы быть немного яснее. –
Библиотека [socket_wrapper] (https://cwrap.org/socket_wrapper.html) предоставляет эту функцию. –