Sic*_*ldr 6 c memory pointers shared
当我尝试执行这部分代码时,我得到一个"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;
Run Code Online (Sandbox Code Playgroud)
这里有问题,但我无法弄清楚是什么.你能帮助我吗?
谢谢,亚历克斯.
sta*_*ker 12
从shmget(1)手册页:
EINVAL要创建新段并且大小<SHMMIN或大小> SHMMAX,或者不创建新段,具有给定键的段,但是大小大于该段的大小.
您应该检查是否仍有此密钥的分段使用ipcs,并将其删除ipcrm.