共享内存不分配?

时间:2012-09-27 17:13:26

标签: c shared-memory

我试图根据变量shmsz分配一定数量的共享内存,该变量总是8的倍数。在大多数情况下,它是8或16。

使用以下代码:

// allocate shared memory
if ((shmid = shmget(IPC_PRIVATE, shmsz, IPC_CREAT | 0666)) < 0) {
  printf("Could not allocate shared memory.\n");
  exit(1);
}

这曾经像魅力一样工作。但现在,我总是收到错误消息并让我的程序退出。

编辑errno()显示“总线错误:10”

1 个答案:

答案 0 :(得分:0)

有时,当共享内存中存在访问权限时(例如尝试在只读的共享内存中写入),进程会收到SIGSEGV或SIGBUS

在您的情况下,当您使用0666创建它时,此方案只有一种可能的情况:您是否尝试从该共享内存执行代码?