在我当前的项目中,我必须使用 100 字节的共享内存区域,再加上紧随其后的一个整数,所以,我认为大约是 108。 但是,我似乎无法隔离这个整数。
我不太了解这是如何工作的,所以如果看起来我没有尝试,我真的很抱歉。
我所做的是,我尝试将整数的假定开始转换为整数指针,就像这样:
int *number=(int *) data[100]
数据是 shmat 之后指向共享内存的指针。
共享内存的初始化如下(不包括错误检查,以免这里增加很多行代码):
shmid=shmget(IPC_PRIVATE, 100+sizeof(int), IPC_CREAT | 0600)
有办法做到我所描述的吗?
编辑:是的,最好只上传代码:
char *data;
int shmid;
if ((shmid=shmget(IPC_PRIVATE, 100+sizeof(int), IPC_CREAT | 0600)) == -1){
printf("Error shmget");
exit(3);
}
int *number = (int *)data[100];
int *number=(int *)ptr;
如果您取消引用
number
指针,您可能会调用未定义的行为。
使用
memcpy
代替。
int number;
memcpy(&number, ptr, sizeof(number));