Shmget: Invalid argument. Why i get this error?

17,904

From the shmget(1) man page:

EINVAL A new segment was to be created and size < SHMMIN or size > SHMMAX, or no new segment was to be created, a segment with given key existed, but size is greater than the size of that segment.

You should check whether you still have an segment for this key using ipcs and remove it with ipcrm.

Share:
17,904
Sicioldr
Author by

Sicioldr

Updated on July 15, 2022

Comments

  • Sicioldr
    Sicioldr almost 2 years

    I get a "shmget: Invalid argument error" while i try to execute this part of code

      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;
    

    there is something wrong here but i can't figure out what. Can you help me?

    Thanks, Alex.

  • Sicioldr
    Sicioldr over 12 years
    can i use a different way to assign a value to key in order to get a bigger space of available memory?