我有像
这样的结构struct board{
char name;
int values[37];
}board
想象一下这样一款游戏,其中有几个玩家在一张桌子上玩,并且他们都在数值阵列的不同位置做出不同的赌注。棋盘的名称是唯一的,玩家进入指定棋盘名称的游戏。如果2个或更多玩家输入相同的棋盘名称,则他们都加入同一个游戏。
我需要将此结构放入共享内存并访问/修改“值”的内容 同时来自不同的进程(信号量不是问题)。我设法将结构复制到一块共享内存中,但我不知道如何访问该名称以查看某个板是否已存在以及类似的内容。
这是一个学校项目,我有点绝望.... pleeease帮助和谢谢。顺便说一句,我希望共享内存引用POSIX os
答案 0 :(得分:4)
POSIX共享内存函数已经考虑到了这种类型的努力:
int shm_open(const char *name, int oflag, mode_t mode);
如果您对"/onica_game_<name>"
参数使用*name
,则可以轻松指定要为共享游戏附加哪些共享内存段。 (顺便提一下,单个char
对游戏名称有点限制。你可能想要使用char name[32];
或更大的东西来让人们有机会将他们的游戏命名为更有意义的东西。)
我建议在名称前添加onica_game_
,因为POSIX共享内存段的命名空间是系统范围的。