#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <unistd.h>
#define SHM_KEY 1001
typedef struct{
int len;
char UserData[20];
} UserDefineStruct;
main(int argc, char** argv)
{
int shm_id,i;
key_t key;
char temp;
UserDefineStruct *p_map;
//char* name = "/root";
//key = ftok(name,0);
//if(key==-1)
// perror("ftok error");
//也可以使用自己定义的宏
key = SHM_KEY;
shm_id=shmget(key,4096,IPC_CREAT);
//shmget用来获得共享内存区域的ID,如果不存在指定的共享区域就创建相应的区域。
if(shm_id==-1)
{
perror("shmget error");
return;
}
p_map=(UserDefineStruct*)shmat(shm_id,NULL,0);
//shmat()把共享内存区域映射到调用进程的地址空间中去
//用户在此生产/处理自己的数据
if(shmdt(p_map)==-1)
{
perror(" detach error ");
//shmdt()调用用来解除进程对共享内存区域的映射
}
}
删除该共享内存:
void removeshm(int shmid)
{
shmctl(shmid, IPC_RMID, 0);
printf("Shared memory segment marked for deletion/n");
}