共享内存是一种进程间通信的方式,它允许多个进程访问同一块物理内存,从而实现数据共享。C语言的共享内存示例
#include
#include
#include
#include
#include
#include
#define SHM_SIZE 1024
int main()
{
int shmid;
char *shmaddr;
key_t key = 5678;
// 创建共享内存
if ((shmid = shmget(key, SHM_SIZE, IPC_CREAT | 0666)) < 0) {
perror("shmget");
exit(1);
}
// 连接到共享内存
if ((shmaddr = shmat(shmid, NULL, 0)) == (char *) -1) {
perror("shmat");
exit(1);
}
// 写入共享内存
sprintf(shmaddr, "Hello, world!");
// 从共享内存中读取数据
printf("Message read from shared memory: %s\n", shmaddr);
// 断开与共享内存的连接
if (shmdt(shmaddr) == -1) {
perror("shmdt");
exit(1);
}
// 删除共享内存
if (shmctl(shmid, IPC_RMID, NULL) == -1) {
perror("shmctl");
exit(1);
}
return 0;
}
这个程序创建了一个大小为1024字节的共享内存段,并通过key值5678进行标识。它向共享内存中写入了一个字符串“Hello, world!”,然后从共享内存中读取这个字符串并打印它。最后,程序断开与共享内存的连接并删除共享内存段。