【发布时间】:2012-11-21 01:53:44
【问题描述】:
我需要创建一个共享内存段,以便我可以让多个读取器和写入器访问它。我想我知道我在做什么,就信号量、读者和作者而言......
但我对如何创建共享内存段一无所知。我希望该段包含 20 个结构的数组。每个结构将包含一个名字、一个 int 和另一个 int。
谁能帮助我至少开始这个?我很绝望,我在网上阅读的所有内容都让我更加困惑。
编辑:好的,所以我开始做这样的事情
int memID = shmget(IPC_PRIVATE, sizeof(startData[0])*20, IPC_CREAT);
使用 startData 作为保存我的数据的结构数组已初始化,我收到一条错误消息 “分段错误(核心转储)”
【问题讨论】:
-
man shmget和shmat -
在致电
shmget或之后?您是否检查了对shmget的调用是否返回了错误(如果返回,则 memID 将为 -1,您可以使用perror打印错误)。 -
我建议您首先复制现有示例并根据需要进行更改。 support.sas.com/documentation/onlinedoc/sasc/doc750/html/lr2/…
-
@Nick 当我运行该代码时,它甚至不会为我编译。我得到“test.c: In function
main': test.c:51: error:S_IRUSR' undeclared (first use in this function) test.c:51: error: (每个未声明的标识符只报告一次 test.c:51: error: 对于每个函数出现在。)test.c:51:错误:S_IWUSR' undeclared (first use in this function) test.c:51: error:S_IRGRP'未声明(在此函数中首次使用)test.c:51:错误:S_IWGRP' undeclared (first use in this function) test.c:51: error:S_IROTH'未声明(在此函数中首次使用)test.c: 51:错误:`S_IWOTH' ...
标签: c struct shared-memory