【发布时间】:2018-12-31 11:06:48
【问题描述】:
我必须在 c 中为共享内存中的内存分配器创建一个库。根据我的尝试,我必须在每个使用我的库并将指针传递给我的 malloc 函数的程序的开头打开并映射共享内存。是否可以在图书馆内只打开一次?这是我在整个作业中唯一不明白的地方
【问题讨论】:
-
在当今的操作系统中,每个进程都有自己的地址空间,因此您必须在每个进程(而不是程序或库)开始时映射共享内存。跨度>
-
因此,每个进程都必须调用 shm_open、ftruncate 和 mmap,最后调用 shm_unlink 或者我是否应该仅在共享内存的大小大于 0 时才调用 ftruncate。我将不得不通过指向我的 malloc 函数的指针
-
您的 init 函数可以将句柄保存在静态变量中,因此您不必将其传递给您的 malloc
-
你已经有一些代码了吗?为什么不显示呢?
标签: c linux shared-memory