системный вызов для сопоставления памяти с файловым дескриптором (обратный mmap)? - PullRequest
6 голосов
/ 12 мая 2010

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

void do_operation1(int fd);

char data[DATA_MAX] = { /* embedded binary data */ };
int fd = addr_to_fd(data, DATA_MAX);

do_operation1(fd);
/* ... operate on fd ... */

Какой системный вызов или вызовы можно использовать для этого?

Ответы [ 3 ]

7 голосов
/ 12 мая 2010

Некоторые реализации имеют fmemopen().(Тогда, конечно, вы должны позвонить fileno().)

3 голосов
/ 01 октября 2010

Вы должны проверить shm_open().

2 голосов
/ 08 ноября 2011

Конечно, просто open(argv[0], ...), просмотрите файл, чтобы найти, где ваши двоичные данные начинаются, lseek() там и готово. Этот файл не будет иметь длину ваших двоичных данных, конечно.

...