问题标签 [sysv-ipc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
56 浏览

c - 矩阵共享内存的 Shmget 错误

代码上下文:您好,我正在尝试创建一个程序,该程序可以使用单独的进程(child1 和 child2)将两个 2x2 矩阵相乘。具体来说,child1 处理结果矩阵的第 1 行,而 child2 处理结果矩阵的第 2 行。这个结果矩阵存储在共享内存中。

问题:shmget()返回 -1,而errno是 22 = 无效参数。

这是我的共享内存结构:

有人可以解释我在shmget()上做错了什么吗?

需要注意的是,我已经注释掉了shmget()的第一次尝试。

0 投票
1 回答
69 浏览

c - 同一个key的shmget缓冲区和semget semaphore有什么关系?

我试图了解使用相同的 System Vkey_t值来分配共享内存缓冲区 viashmget()和信号量 via的含义semget()。这是否存在任何冲突,即我应该为共享内存缓冲区和信号量分配一个单独的键值吗?或者信号量和共享内存是否不同?也许它们是不同的,但在某种程度上相关?换句话说,如果同时调用semget(0x1000, 1, IPC_CREAT|0660)and会发生什么shmget(0x1000, 1, IPC_CREAT|0660)

我知道键是系统范围的值。我也明白这ftok()是产生key_t价值的标准方式,但这不在我的控制之下。

上下文:我编写了一些处于高级开发状态的代码,它调用使用 System V IPC shmget/构建的例程semget。我的代码使用固定的信号量 ID(在内部转换为键),事实证明,它与在其他地方使用的固定共享内存 ID(也在内部转换为键)具有相同的数值。直接的问题是,我是否需要修改我的代码以在信号量和共享内存缓冲区中分配唯一 ID,或者保持原样(仅在信号量中唯一);更大的问题是,这是我未来需要注意的一个警告。使用当前代码,没有错误,到目前为止的测试也没有发现任何问题,但这并不意味着不会出错。

0 投票
0 回答
41 浏览

sysv-ipc - python sysv-ipc 创建/附加/删除共享内存

我需要启动一个进程创建共享内存,然后启动其他进程来读取它。有例子吗?

运行:SharedMemory(9001,mode=666,size=9999,flags=IPC_CREX)

得到:sysv_ipc.PermissionsError:没有附加权限

再次运行:得到:sysv_ipc.ExistentialError:与密钥 9501 的共享内存已存在

0 投票
1 回答
48 浏览

c - C 中的共享内存 (sysV)

所以我试图将共享内存映射到自定义结构。现在我不知道 segsize 有多大,直到用户启动程序并输入一个值。我希望缓冲区是指向 int 值之后的内存空间开头的指针。现在,如果我这样做,我会遇到内存故障。我可以附加它并通过以下方式获取起始内存空间:

关于如何使其处于可以执行 mem->value1 并访问数据缓冲区以获取原始数据字节的状态的任何提示?