Shmget:参数无效.为什么我会收到此错误?

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.