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?
Some implementations have
fmemopen()
. (Then of course you have to callfileno()
).If yours doesn't, you can build it yourself with
fork()
andpipe()
.You should Check out
shm_open()
.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.