【发布时间】:2014-05-04 17:16:19
【问题描述】:
当我正在用 c 编写一个学校项目时,我在使用共享内存时遇到了麻烦。出于某种原因,我的解决方案曾经有效,但现在无效(我知道,这很不科学)。
我创建一个共享变量:
int *sharedVar = mmap(NULL, sizeof(int)*7, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);
当我尝试这样使用它时:
sharedVar[0]=1;
或者这个:
sharedVar[4]=0;
我收到分段违规 (SIGSEGV) 错误消息。 我会很高兴收到您的任何建议。
编辑:strerror 说:
Bad file descriptor
这是什么意思?
解决方案:我还没有清理我的记忆。我觉得自己很傻。
【问题讨论】:
-
必须检查 mmap 的返回值。该系统调用可能会失败。检查返回值,然后检查 errno(参见手册页)。
-
我该怎么做?
-
错误的文件描述符...... shm_fd 出了点问题。
标签: c posix shared-memory mmap segmentation-fault