shmget()
:创建或获取一个共享内存标识符
shmget()
创建一个新共享内存段或取得一个既有共享内存段的标识符(即由其他进程创建的共享内存段)。这个调用将返回后续调用中需要用到的共享内存标识符。shmat()
:将一个共享内存段绑定到当前进程
shmat()
来附上共享内存段,使该段成为调用进程的虚拟内存的一部分。shmat()
返回的addr值来访问共享内存duan
shmat()
调用返回的 addr 值,它是一个指向进程的虚拟地址空间中该共享内存段的起点的指针。shmdt()
:分离共享内存段
shmdt()
来分离共享内存段。在这个调用之后,进程就无法再引用这块共享内存了。这一步是可选的,并且在进程终止时会自动完成这一步。shmctl()
:删除共享内存段
shmctl()
来删除共享内存段。只有当前所有附加内存段的进程都与之分离之后内存段才会销毁。只有一个进程需要执行这一步。<aside>
💡 shmget
创建一个新的共享内存段,或者获取一个既有的共享内存段的标识,新创建的内存段中的数据都会被初始化为0
</aside>
参数
key
:key_t
类型是一个整形,通过这个值找到或者创建一个共享内存。
size
:共享内存的大小
shmget
获取该共享内存段时,size
参数的值无关紧要,只需指定一个非零值即可shmflg
:一些属性:
IPC_CREAT
:创建共享内存IPC_EXCL
:判断共享内存是否存在
IPC_CREAT
一起使用IPC_CREAT | IPC_EXCL | 0664
返回值