qfedu-linux-advanced-level/day5/shm1.c

30 lines
1.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 共享内存
/*
是的,"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;
}