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 都用到了同一个资源,使用共享内存来发送信号。