【发布时间】:2015-12-24 11:03:25
【问题描述】:
我有一个“服务器”和一个“客户端”进程,它们通过结构共享内存“通信”。
typedef struct
{
char* buffer;
int cards;
int maxCards;
} myStruct
“服务器”和“客户端”进程都可以获取/设置这两种 int 类型的值,但缓冲区不同(我们将其用作指向字符的指针):“服务器”分配内存,喜欢:
(*sharedMem).buffer = (char*) malloc(sizeof(char)*maxCards);
具有设置或获取值的能力:
(*sharedMem).buffer[0] = 'a';
printf("%c\n",(*sharedMem).buffer[0]);
但是当“客户端”进程试图访问一个字符时:
printf("%c\n",(*sharedMem).buffer[0])
它因 Segmentation Fault Core Dumped 错误而崩溃。 有没有办法在不使用数组或列表的情况下解决这个问题?有任何想法吗?
【问题讨论】:
-
两个进程有不同的地址空间,所以一个中的指针可能在另一个中没有意义?
-
为什么不能使用数组或列表?因为使用数组作为缓冲区正是您需要的解决方案。
-
@Jens 有什么办法可以将指定的地址发送到“客户”进程吗?
-
@FUZxxl 这是一个解决方案,如果我无法在进程之间更改地址,我将使用一个列表。
-
找到答案了,这个问题已经回答了:stackoverflow.com/questions/14558443/…
标签: c linux pointers malloc shared-memory