问题
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?
回答1:
You should Check out shm_open()
.
回答2:
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:
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.
来源:https://stackoverflow.com/questions/2822040/system-call-to-map-memory-to-a-file-descriptor-inverse-mmap