您可以使用mmap功能。
在计算中,mmap(2) 是一个符合 POSIX 的 Unix 系统调用,它将文件或设备映射到内存中。它是一种内存映射文件 I/O 的方法。
你有2个优势。Extreme speed
在加载文件时,内容将位于可以在许多其他进程之间共享的内存区域中(只需mmap
与 flag 一起使用MAP_SHARED
)。
您可以使用这个简短而肮脏的代码来测试 mmap 的速度。只需编译它并执行它,将您要加载的文件作为参数传递。
#include <stdio.h>
#include <stdint.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
int main(int argc, char *argv[])
{
struct stat sb;
int fd = open(argv[1], O_RDONLY);
// get the size in bytes of the file
fstat (fd, &sb);
// map the file in a memory area
char *p = mmap (0, sb.st_size, PROT_READ, MAP_SHARED, fd, 0);
// print 3 char of the file to demostrate it is loaded ;)
printf("first 3 chars of the file: %c %c %c\n", p[0], p[1], p[2]);
close(fd);
// detach
munmap(p, sb.st_size);
}