Можно ли сопоставить дескриптор, созданный socket(), с буфером памяти?

Есть ли способ отобразить дескриптор, созданный socket(), в буфер памяти?

Причина, по которой я ищу это, заключается в том, что я хочу создать существующее приложение для чтения из буфера памяти, который я создал, вместо связанного с ним буфера TCP. Я не должен изменять приложение, поэтому я хочу отобразить fd, возвращенный приложением, в буфер, который я создал.

Я нашел похожий вопрос: можно ли преобразовать дескрипторы сокетов в указатели файлов?

Но я не знаю, можно ли использовать fdopen() для моих целей, потому что fdopen() принимает только два аргумента (fd и mode), и я не знаю, как заново связать fd с памятью, которую я создаю с помощью malloc().

1 ответ

Есть ли способ отобразить дескриптор, созданный socket(), в буфер памяти?

Нет, это не имеет смысла. Отображенный файл имеет смысл из-за системы виртуальной памяти. Сопоставленное гнездо - нет.

Я хочу отобразить fd, возвращенный приложением, в буфер, который я создал.

Вам нужно будет написать код для чтения из сокета в ваш буфер.

Другие вопросы по тегам