我希望能夠將內存映射到文件描述符,以便我可以使用一些需要文件描述符的現有函數。這裏是我正在尋找的東西:將內存映射到文件描述符(反向mmap)的系統調用?
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 ... */
我可以用什麼系統調用或調用來完成此操作?
事實證明,當'FILE *'來自'fmemopen'或其他等價物時,'fileno()'在Linux/FreeBSD(以及其他人)上都失敗。如果沒有獲取文件描述符的方法,我不確定我們是否有解決方案。 – 2010-05-21 06:08:31
'fmemopen'也可以使用BSD上的'funopen'來實現。一個實現可以在https://redmine.openinfosecfoundation.org/attachments/105/0001-fmemopen-wrapper-added-fix-compilation-problems-on-m.patch – 2010-05-21 06:09:31
'fork()'是相當重的這個目的。我建議使用線程來代替。使用'select()'來更好地在管道的讀寫之間進行多路複用,但我想這不是一個選項。 – Sven 2010-09-01 08:40:32