Shmget: неверный аргумент. Почему я получаю эту ошибку? - PullRequest
5 голосов
/ 08 декабря 2011

Я получаю «shmget: Invalid аргумент error» при попытке выполнить эту часть кода

  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;

здесь что-то не так, но я не могу понять, что. Вы можете мне помочь?

Спасибо, Алекс.

1 Ответ

12 голосов
/ 08 декабря 2011

Из справочной страницы shmget (1):

EINVAL Новый сегмент должен был быть создан и размер SHMMAX или новый сегмент не должен был быть создан, сегмент с данным ключом существует, но его размер больше, чем размер этого сегмента.

Вы должны проверить, есть ли у вас сегмент для этого ключа, используя ipcs и удалить его с помощью ipcrm.

...