Можно ли сопоставить дескриптор, созданный socket(), с буфером памяти?
Есть ли способ отобразить дескриптор, созданный socket(), в буфер памяти?
Причина, по которой я ищу это, заключается в том, что я хочу создать существующее приложение для чтения из буфера памяти, который я создал, вместо связанного с ним буфера TCP. Я не должен изменять приложение, поэтому я хочу отобразить fd, возвращенный приложением, в буфер, который я создал.
Я нашел похожий вопрос: можно ли преобразовать дескрипторы сокетов в указатели файлов?
Но я не знаю, можно ли использовать fdopen() для моих целей, потому что fdopen() принимает только два аргумента (fd и mode), и я не знаю, как заново связать fd с памятью, которую я создаю с помощью malloc().
1 ответ
Есть ли способ отобразить дескриптор, созданный socket(), в буфер памяти?
Нет, это не имеет смысла. Отображенный файл имеет смысл из-за системы виртуальной памяти. Сопоставленное гнездо - нет.
Я хочу отобразить fd, возвращенный приложением, в буфер, который я создал.
Вам нужно будет написать код для чтения из сокета в ваш буфер.