c - 共享内存不分配?

标签 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”

最佳答案

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

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

关于c - 共享内存不分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626715/

相关文章:

在 Win32 上停止进程的最干净方法?

c - 在shm_open()之后使用fallocate()会导致在shm_unlink()之后内存没有被释放

c - 用于管理共享映射文件的库或工具

c - 使用共享内存时如何处理被杀(kill -9)?

c++ - 计算用户输入字符串中的数字、小写字母和标点符号的程序中的段错误

c++ - 名称或类型具有某种语言链接意味着什么?

c - 与 docker 共享内存

c - IF 语句中定义的 undefined variable 出错

c++ - 从内存中获取文件句柄

cuda - CUDA 共享内存大小意味着什么