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;
|
||
} |