#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main()
{
int shmId;
char* shmaddr;
key_t key;
key=ftok(".",1);//共享内存的通讯方式是通过键值来寻找的," . "表示当前路径的键值表示只有在同一个文件夹下面才能进行通讯, 系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id ),fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号.
// int shmget(key_t key, size_t size, int shmflg);
shmId=shmget(key,1024*4,IPC_CREAT|0666);//开辟一个共享内存的空间,必须以兆为单位,第三个参数为ipc通讯的指令,0666是权限可读可写。
if(shmId==-1){
printf("memo create fail\n");//开辟空间失败返回值为-1
}
// void *shmat(int shmid, const void *shmaddr, int shmflg);
shmaddr=shmat(shmId,0,0);//内存的映射,映射到数组
strcpy(shmaddr,"huangqifeng");
shmdt(shmaddr);//结束内存的映射
sleep(10);
// int shmctl(int shmid, int cmd, struct shmid_ds *buf);
shmctl(shmId,IPC_RMID,0);//关闭共享内存
printf("quit\n");
return 0;
}