C基础内容罢了
//创建key
key_t key = ftok("./test.txt", 1);
if(key == -1)
{
perror("ftok");
return -1;
}
//创建共享内存
int shmid = shmget(key, 32, IPC_CREAT | 0755);
if(shmid < 0)
{
perror("shmget");
return -1;
}
进程AB都创建同一个key,再创建同一个内存
void *p = shmat(shmid, NULL, 0); //用void*类型,接收共享内存地址
存入信息,关键在于指针偏移,偏移指针时要注意,不能直接对p进行偏移,因为p是void类型,一次移动8个字节,要重新拿一个对应类型的指针,接收地址后移动
int a = 10;
char arr[10] = "hello";
*(int*)p = a;
int *q = (int*)p;
strcpy( (char*)(q+1), arr );
输出也是同理
printf("%d\n",*(int*)p);
int *q = (int*)p;
printf("%s\n",(char*)(q+1));