发送端
#include <myhead.h>
#define PAGE_SIZE 4096
int main(int argc, const char *argv[])
{
key_t key=ftok("./",'W');
if(key==-1)
{
perror("ftok");
return -1;
}
int shmID=shmget(key,PAGE_SIZE,IPC_CREAT|0664);
if(shmID==-1)
{
perror("shmget");
return -1;
}
char *shmADD=shmat(shmID,NULL,0);
if(shmADD==(void *)-1)
{
perror("shmat");
return -1;
}
char buff[1024];
while(1)
{
printf("请输入共享内存的资源:");
fgets(buff,sizeof(buff),stdin);
strcmp(shmADD,buff);
if(strcmp(shmADD,"quit\n")==0)
{
break;
}
}
if(shmdt(shmADD)==-1)
{
perror("shmdt");
return -1;
}
if(shmctl(shmID,IPC_RMID,NULL)==-1)
{
perror("shmctl");
return -1;
}
return 0;
}
接收端
#include <myhead.h>
#define PAGE_SIZE 4096
int main(int argc, const char *argv[])
{
key_t key=ftok("./",'W');
if(key==-1)
{
perror("ftok");
return -1;
}
int shmID=shmget(key,PAGE_SIZE,IPC_CREAT|0664);
if(shmID==-1)
{
perror("shmget");
return -1;
}
char *shmADD=shmat(shmID,NULL,0);
if(shmADD==(void *)-1)
{
perror("shmat");
return -1;
}
while(1)
{
printf("%s\n",shmADD);
if(strcmp(shmADD,"quit\n")==0)
{
break;
}
}
if(shmdt(shmADD)==-1)
{
perror("shmdt");
return -1;
}
return 0;
}