程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 內存共享基本演示

內存共享基本演示

編輯:C++入門知識

發送端: 申請共享內存區域並寫入數據到共享內存區域

sender.c

 #include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <unistd.h>  
#include <sys/types.h>  
#include <sys/shm.h>  
 
#define BUFSIZ 102400  
int main() 
{ 
    int shmid=-1; 
    char * viraddr; 
    char buffer[BUFSIZ]; 
    key_t shmkey =<SPAN style="COLOR: #ff0000"> ftok("/home/cip/test/", 0);</SPAN> 
    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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/shm.h>

#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 <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <unistd.h>  
#include <sys/types.h>  
#include <sys/shm.h>  
 
#define BUFSIZ 102400  
int main() 
{ 
    int shmid=-1; 
    char * viraddr; 
    char buffer[BUFSIZ]; 
    key_t shmkey = ftok<SPAN style="COLOR: #ff0000">("/home/cip/test/", 0);</SPAN> 
 
 
    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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/shm.h>

#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;
}

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved