代码之家  ›  专栏  ›  技术社区  ›  Kaleb Pederson

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

  •  6
  • Kaleb Pederson  · 技术社区  · 14 年前

    我希望能够将内存映射到一个文件描述符,这样我就可以使用一些需要文件描述符的现有函数。以下是我想要的:

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

    我可以用什么系统调用来完成这个任务?

    3 回复  |  直到 13 年前
        1
  •  3
  •   chown    13 年前

    你应该退房 shm_open() .

        2
  •  7
  •   Randy Proctor    14 年前

    有些实现 fmemopen() . (那你当然得打电话 fileno() )

    如果你的没有,你可以自己建造 fork() pipe() .

        3
  •  2
  •   Maxim Egorushkin    13 年前

    当然,只是 open(argv[0], ...) ,扫描文件以查找二进制数据的起始位置, lseek() 完成了。当然,这个文件没有二进制数据的长度。