内存共享基本演示

2014-11-23 21:54:10 来源: 作者: 浏览: 11

发送端: 申请共享内存区域并写入数据到共享内存区域

sender.c

 #include   
#include   
#include   
#include   
#include   
#include   
 
#define BUFSIZ 102400  
int main() 
{ 
    int shmid=-1; 
    char * viraddr; 
    char buffer[BUFSIZ]; 
    key_t shmkey = ftok("/home/cip/test/", 0); 
    shmid = shmget(shmkey,BUFSIZ, IPC_CREAT|0666); //申请共享区域  
    viraddr=(char*)shmat(shmid,0,0); //附件共享地址到将本进程  
    while(1) 
    { 
        puts("enter some text:"); 
        fgets(buffer, BUFSIZ, stdin); 
        strcat(viraddr,buffer);添加数据到共享内存中 
        if(strncmp(buffer,"end",3)==0) 
        { 
            break; 
        } 
    } 
    shmdt(viraddr); //撤销地址映射  
     
    return 0; 
} 

#include 
#include 
#include 
#include 
#include 
#include 

#define BUFSIZ 102400
int main()
{
 int shmid=-1;
 char * viraddr;
 char buffer[BUFSIZ];
 key_t shmkey = ftok("/home/cip/test/", 0);
 shmid = shmget(shmkey,BUFSIZ, IPC_CREAT|0666); //申请共享区域
 viraddr=(char*)shmat(shmid,0,0); //附件共享地址到将本进程
 while(1)
 {
  puts("enter some text:");
  fgets(buffer, BUFSIZ, stdin);
  strcat(viraddr,buffer);添加数据到共享内存中
  if(strncmp(buffer,"end",3)==0)
  {
   break;
  }
 }
 shmdt(viraddr); //撤销地址映射
 
 return 0;
}
gcc -o send sender.c

 

接收端:

读取共享区的内容

 #include   
#include   
#include   
#include   
#include   
#include   
 
#define BUFSIZ 102400  
int main() 
{ 
    int shmid=-1; 
    char * viraddr; 
    char buffer[BUFSIZ]; 
    key_t shmkey = ftok("/home/cip/test/", 0); 
 
 
    shmid = shmget(shmkey,BUFSIZ, IPC_CREAT|0666); //获取共享区域  
    viraddr=(char*)shmat(shmid,0,0); 
    printf("Your message is:\n%s", viraddr); 
    shmdt(viraddr); 
    shmctl(shmid, IPC_RMID,0); 
     
    return 0; 
} 

#include 
#include 
#include 
#include 
#include 
#include 

#define BUFSIZ 102400
int main()
{
 int shmid=-1;
 char * viraddr;
 char buffer[BUFSIZ];
 key_t shmkey = ftok("/home/cip/test/", 0);


 shmid = shmget(shmkey,BUFSIZ, IPC_CREAT|0666); //获取共享区域
 viraddr=(char*)shmat(shmid,0,0);
 printf("Your message is:\n%s", viraddr);
 shmdt(viraddr);
 shmctl(shmid, IPC_RMID,0);
 
 return 0;
}

 

 

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: