Linux下共享内存数据传递

我在一个APP  B下这样写

#include <sys/ipc.h> 
#include <sys/shm.h> 


#define MY_SHM_ID 67483 

int shmid;  

void *shmptr;
if((shmid = shmget(MY_SHM_ID,1024,IPC_CREAT)) ==-1)    
{    
printf("shmget error!\n");
exit(1);  
}    

if((shmptr = shmat(shmid,0,0)) == (void *)-1)    
{    
printf("shmat error!\n");    
exit(1);  
}    
printf("current background display status  :%s\n",shmptr); 
memcpy(strbuf,(unsigned char *)shmptr,5);
if(strbuf[0]== 'e')//cannot write 
bg_sta = true;
else if(strbuf[0]== 'd')
{
bg_sta = false;
flgonce =0;
}else 
{
bg_sta = true;
}
在另一个APP  A下

#define MY_SHM_ID 67483

 //创建一个共享内存区段  
    int shmid;    
    void *shmptr;   
    shmid=shmget( MY_SHM_ID,1024,0666|IPC_CREAT ); 
  if((shmptr =shmat(shmid,0,0))==(void *)-1)    
    {    
   printf("shmat error!\n");    
   exit(1);    
    }
    strcpy((char *)shmptr,"enable");
其中我用了67483这段共享内存标识符,开辟了1024大小的共享内存空间。

上边的是一个单向的,就是APP A 是写信息的,APP B是读取信息的分析的。由于两个APP 都用到了同一个资源,使用共享内存来发送信号。

sitemap