使用共享内存的demo
时间: 2023-07-11 14:31:45 浏览: 49
以下是一个使用共享内存的简单示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define SHM_SIZE 1024 // 共享内存大小
int main()
{
int shmid;
key_t key;
char *shm, *s;
// 创建一个key值
key = ftok(".", 'a');
// 创建共享内存
shmid = shmget(key, SHM_SIZE, IPC_CREAT | 0666);
if (shmid == -1) {
perror("shmget");
exit(1);
}
// 将共享内存附加到进程的地址空间
shm = shmat(shmid, NULL, 0);
if (shm == (char *) -1) {
perror("shmat");
exit(1);
}
// 写入数据到共享内存
s = shm;
for (char c = 'a'; c <= 'z'; c++) {
*s++ = c;
}
*s = '\0';
// 从共享内存中读取数据
for (s = shm; *s != '\0'; s++) {
putchar(*s);
}
putchar('\n');
// 解除共享内存的附加
shmdt(shm);
// 删除共享内存
shmctl(shmid, IPC_RMID, 0);
return 0;
}
```
该程序创建一个共享内存区域,向其中写入字母表并从中读取数据,最后删除共享内存。需要注意的是,共享内存的key值应该在不同的进程中保持一致。