系统调用将内存映射到文件描述符(逆mmap)?

Kal*_*son 6 c unix posix mmap system-calls

我希望能够将内存映射到文件描述符,以便我可以使用一些需要文件描述符的现有函数.这基本上就是我在寻找的东西:

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 ... */
Run Code Online (Sandbox Code Playgroud)

我可以使用什么系统调用或调用来实现此目的?

Ran*_*tor 7

一些实现有fmemopen().(当然你必须打电话fileno()).

如果你没有,你可以用fork()和自己构建它pipe().

  • 这是行不通的,因为 `fmemopen()` 只是创建了一个由给定内存缓冲区支持的 `FILE*`。没有创建文件描述符。 (2认同)

小智 3

你应该去看看shm_open()