shm_open()和ftruncate()的目的是什么?
当我们创建一个共享内存时,我们使用shm_open()和ftruncate()函数.根据我的信息,shm_open()创建一个共享内存区域.然后我们使用ftruncate()函数来配置共享内存区域的大小.
那么当shm_open()还不知道大小时,它是如何首先创建内存区域的?如果不是这样,我完全错了,那么请告诉我shm_open()和ftruncate()的目的.提前致谢!!! 解决方法
shm_open的要点是你可以打开一个现有的内存区域.但是,如果它不存在并且你创建它,shm_open在创建文件时表现得像open;新创建的内存区域大小为0.从
Linux manuals开始:
(强调我的) 由于shm_open不会将新创建的区域的大小作为参数(它会使系统调用/库调用复杂化以便为各种情况添加参数),因此必须使用ftruncate()来更改已打开的共享内存区域的大小从它的初始大小. 当然,您不必将ftruncate用于已正确创建并在其他位置调整大小的共享内存段.如果您想知道它的大小,请使用fstat.另见 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |