system call to map memory to a file descriptor (in

2019-02-22 06:15发布

I want to be able to map memory to a file descriptor so I can use some existing functions that need a file descriptor. Here's essentially what I'm looking for:

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 ... */

What system call, or calls, can I use to accomplish this?

3条回答
别忘想泡老子
2楼-- · 2019-02-22 06:52

Some implementations have fmemopen(). (Then of course you have to call fileno()).

If yours doesn't, you can build it yourself with fork() and pipe().

查看更多
手持菜刀,她持情操
3楼-- · 2019-02-22 06:58

You should Check out shm_open().

查看更多
小情绪 Triste *
4楼-- · 2019-02-22 07:15

Sure, just open(argv[0], ...), scan through the file to find where your binary data starts, lseek() there and done. That file won't have the length of your binary data of course.

查看更多
登录 后发表回答