#include "apue.h"
main(){
int id;
//创建共享内存
id=shmget(IPC_PRIVATE,128,0777);
if(id<0){
printf("create share memmory fail \n");
}else{
printf("create share memmory succusess id=%d\n",id);
system("ipcs -m");
printf(" start to delete share memmory===\n");
shmctl(id,IPC_RMID,NULL);//删除创建的共享内存
system("ipcs -m");
// while(1);
// magctl
return 0;
}
}
#include "apue.h"
main(){
int id ,key;
key = ftok("./shm.c",'a');
char *p;
//创建共享内存
id=shmget(key,128,IPC_CREAT|0777);
if(id<0){
printf("create share memory fail \n");
perror("");
}
else
{
printf("create share memory succusess id=%d\n",id);
system("ipcs -m");
p = (char *)shmat(id,NULL,0);//映射共享内存到用户空间 方便标准流读写
if(p==NULL)
{
printf("create share memory copy fail \n");
perror("");
}
//从表中输入中接受输入到共享内存
fgets(p,128,stdin);
printf("data of reading is = %s\n",p);
int res_dt = shmdt(p);//释放空间
if(res_dt<0){
perror("fail to delete to user memory");
return -1;
}
printf(" start to delete share memory===\n");
shmctl(id,IPC_RMID,NULL);//删除创建的共享内存
system("ipcs -m");
// while(1);
// magctl
return 0;
}
}