1

我试图根据一个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”

4

1 回答 1

0

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

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

于 2012-09-28T15:29:54.060 回答