我有一些程序处理文件或内存缓冲区中的一些数据。我想提供统一的方式来处理这些情况。
我可以 1)映射文件,以便我们可以将它们作为内存缓冲区统一处理;2) 使用 fopen 和 fmemopen 创建 FILE*,以便将它们作为 FILE* 统一访问。
但是,我不能使用上述任何一种方式。我需要将它们都作为文件描述符来处理,因为我使用的库之一只接受文件描述符,并且它在文件描述符上执行 mmap。
所以我的问题是,给定一个内存缓冲区(我们可以假设它与 4K 对齐),我们能否获得一个由该内存缓冲区支持的文件描述符?我在其他一些问题中看到 popen 是一个答案,但我认为 popen 中的 fd 不能被 mmap-ed。