30 lines
1.3 KiB
C
30 lines
1.3 KiB
C
|
// 共享内存
|
|||
|
/*
|
|||
|
是的,"shm"是共享内存(shared memory)的缩写,它通常用于表示共享内存相关的概念和操作。共享内存是一种进程间通信的机制,允许多个进程共享同一块内存区域,从而实现高效的数据交换和共享。
|
|||
|
|
|||
|
在Linux系统中,使用`shmget`函数创建或获取共享内存段(shared memory segment),进程可以通过该段共享内存进行通信。共享内存段是一个连续的内存区域,可以被多个进程映射到各自的地址空间中,从而实现共享数据的读写。
|
|||
|
|
|||
|
共享内存在进程间通信中具有高速和低开销的优势,因为进程可以直接读写共享内存,而无需进行复制或传输数据。但同时也需要注意正确地处理同步和互斥,以避免数据竞争和一致性问题。
|
|||
|
|
|||
|
因此,当你看到"shm"时,通常指的是共享内存,而"share mem"是它的完整表达形式。这两个术语可以互换使用,表示同一概念。
|
|||
|
*/
|
|||
|
#include <sys/shm.h>
|
|||
|
#include <stdio.h>
|
|||
|
#include <sys/types.h>
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
key_t key = ftok("/", 28);
|
|||
|
|
|||
|
// 获取共享内存的标识
|
|||
|
int shmid = shmget(key, 32, IPC_CREAT | 0666);
|
|||
|
if (shmid == -1)
|
|||
|
{
|
|||
|
perror("shmget");
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
printf("shmid=%d\n", shmid);
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|