我很好奇,因为今天我知道如何为两个不同的进程提供相同的共享内存的唯一方法是通过内存映射文件,换句话说,两个进程打开相同的内存映射文件并写入/读取/从它。
由于操作系统需要在磁盘和内存之间交换,因此会产生不利影响。
如果这是一个愚蠢的问题,请提前道歉,但是是否存在进程之间的纯共享内存之类的东西,而不是由文件支持。如果是,如果不使用内存映射文件或 /dev/shm 文件,进程将如何获取它?
我很好奇,因为今天我知道如何为两个不同的进程提供相同的共享内存的唯一方法是通过内存映射文件,换句话说,两个进程打开相同的内存映射文件并写入/读取/从它。
由于操作系统需要在磁盘和内存之间交换,因此会产生不利影响。
如果这是一个愚蠢的问题,请提前道歉,但是是否存在进程之间的纯共享内存之类的东西,而不是由文件支持。如果是,如果不使用内存映射文件或 /dev/shm 文件,进程将如何获取它?
这不是一个愚蠢的问题!
有,这是获取它的默认方式;(SYSV)
shmget
是您用来获取这些共享内存缓冲区的函数。您为其分配一个字符串名称,一个键,另一个进程可以使用该键来shmget
访问它。POSIX 方法shm_open
具有非常相似的语义:你给你的段一个名称,它可能看起来很像文件名,但不受某些硬盘驱动器的支持,并且随后shm_open
调用相同的名称(具有兼容/无标志)将授予对同一内存的访问权限。