我正在尝试根据变量 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”
最佳答案
有时,当该共享内存中存在访问冲突时(例如尝试写入您具有只读权限的共享内存),该进程会收到 SIGSEGV 或 SIGBUS。 .
在您的情况下,当您使用 0666 创建它时,这种情况只有一种可能的情况:您是否尝试从该共享内存执行代码?
关于c - 共享内存不分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626715/