给我一个共享内存程序的C语言代码
时间: 2024-05-03 18:20:38 浏览: 114
以下是一个简单的共享内存程序的C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/shm.h>
#define SHM_SIZE 1024
int main() {
int shmid;
char *shm_addr;
char buffer[SHM_SIZE];
// 创建共享内存空间
shmid = shmget(IPC_PRIVATE, SHM_SIZE, IPC_CREAT | 0666);
if (shmid == -1) {
perror("shmget");
exit(1);
}
// 在当前进程中映射共享内存空间
shm_addr = shmat(shmid, NULL, 0);
if (shm_addr == (void*)-1) {
perror("shmat");
exit(1);
}
// 写入数据到共享内存
printf("Write something to shared memory: ");
fgets(buffer, SHM_SIZE, stdin);
strncpy(shm_addr, buffer, SHM_SIZE);
printf("Data written to shared memory: %s\n", shm_addr);
// 分离共享内存
if (shmdt(shm_addr) == -1) {
perror("shmdt");
exit(1);
}
// 删除共享内存
if (shmctl(shmid, IPC_RMID, NULL) == -1) {
perror("shmctl");
exit(1);
}
return 0;
}
```
该程序使用了系统调用shmget、shmat、shmdt和shmctl来完成共享内存的创建、映射、分离和删除等操作。当程序运行时,它会创建一个共享内存空间,然后在其中写入一些数据,并将其输出到控制台上。在程序结束时,它会将共享内存空间从当前进程中分离,并将其删除掉。
阅读全文