当我尝试执行这部分代码时,我得到了“shmget:无效的参数错误”
int *nFS, *spb, *cell1, shmid;
key_t key = 5768;
//i need a shared memory segment in which i can put 3 ints
if ((shmid = shmget(key, (sizeof(int) * 3), IPC_CREAT | 0666)) < 0 ) {
perror("shmget");
exit(1);
}
if ((spb = (int)shmat(shmid, NULL, 0))== -1 ){
perror("shmat");
exit(1);
}
cell1= spb + 1 ;
nFS= cell1 + 1;
//i try to assign here 7 to nFS
*nFS=7;
这里有问题,但我无法弄清楚是什么。你能帮助我吗?
谢谢,Alex。
答案 0 :(得分:12)
从shmget(1)手册页:
EINVAL将创建一个新细分并且尺寸< SHMMIN或尺寸&gt; SHMMAX,或者没有新的细分市场 已创建,具有给定键的段,但大小大于该段的大小。
您应该使用ipcs
检查是否仍有此密钥的细分,并使用ipcrm
将其删除。