1

据我了解errno 22,在 shmget 的情况下是因为要创建共享内存段,并且 size 的值小于系统施加的最小值或大于系统施加的最大值。

但是我不明白的是,我第一次在服务器中调用 shmget 两次,key_id 为 IPC_PRIVATE,大小为 64K,第二次 key_id 为某个随机数,比如 200,大小为 64K,但它总是失败。

我尝试减小第二个实例的大小,而我看到的行为是我无法理解的

对于key_id > 250第二个实例,key_id 在 200 到 250 之间只允许到 8k 大小,它允许我到 16K 并且key_id < 200它允许我到 32000 字节。

此外,当我更改首先使用随机 key_id 调用 shmget 的顺序,然后使用 IPC 私有且两者的大小为 64K 时,它工作正常。

关于为什么 key_id 在第一个场景中扮演如此重要角色的任何指针。以及为什么使用随机 key_id 调用 shmget 然后 IPC_PRIVATE 有效,但其他方式无效

我正在使用Linux version 2.6.18-238.9.1.el5(mockbuild@x86-002.build.bos.redhat.com) (gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-50)) 并且语言是 C。

4

0 回答 0