我试图根据变量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”
答案 0 :(得分:0)
有时,当共享内存中存在访问权限时(例如尝试在只读的共享内存中写入),进程会收到SIGSEGV或SIGBUS。
在您的情况下,当您使用0666创建它时,此方案只有一种可能的情况:您是否尝试从该共享内存执行代码?