据我所知,在shmget的情况下errno 22
是因为要创建共享内存段,并且size的值小于系统强加的最小值或大于系统强加的最大值。 / p>
但是我不理解的是我第一次在服务器中调用shmget,其中key_id为IPC_PRIVATE,大小为64K,第二次为key_id,因为一些随机数让200说,大小为64K,它总是失败。 / p>
我尝试减少第二个实例的大小,我看到的行为是我无法理解的行为
对于key_id > 250
,第二个实例只允许大小为8k,key_id在200到250之间,它允许我直到16K,对于key_id < 200
它允许我直到32000字节。
此外,当我更改使用随机key_id首先调用shmget的顺序,然后使用IPC private调整大小为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.