We help IT Professionals succeed at work.

shmget() system call

derick042497
derick042497 asked
on
Medium Priority
1,144 Views
Last Modified: 2008-03-10
I'm facing another problem now. Does anybody have any idea what the Sun Solaris system library nsl (makefile usage -lnsl) is used for? If somebody do, what is the equivalent in the IBM AIX system?

I also have problems getting the shared memory id using the following code :

#define STKCODE_TBL_SHMKEY      7001L
#define STKCODE_HASHSIZE        ( 2 * 1773 )
#define STKCODE_LEN             6

typedef struct {
    char    stkcode [ STKCODE_LEN+1];
    int     key;   /* index to data              */
    int     next;  /* next entry having same hash value  */
} STKCODE_TBL;                              

int
attach_stkcode_shm ( )
{
  key_t         key;
  int           shmid;
/*  long                shmsz; */
  int           shmsz;

  key = (key_t) STKCODE_TBL_SHMKEY;
  shmsz = STKCODE_HASHSIZE  * sizeof ( STKCODE_TBL );
  if ( ( shmid = shmget (key, shmsz, SHM_RDONLY )) == -1 )    {
        perror ("shmget STKCODE_TBL ");
        return (-1);
  }
}

In order to get the makefile running, I'd removed the -lnsl option from the makefile in the IBM AIX. However, the system call to the shmget() function still fails.

The error message shown is as followed :

shmget STKCODE_TBL : No such file or directory

The ipcs command did show the shared memory segment was created successfully. However, I am unable to extract the shared memory id out. I hope somebody can help me out.
Comment
Watch Question

Given the output of perror, shmget most likely had set
errno to ENOENT, meaning that no such entry was found.
Are you sure key value 7001 is correct? Normally a key
is created using ftok() ...

You could try to bitwise-or the last parameter with the
IPC_CREAT flag. If shmget succeeds, you're sure that
the 7001 key did not exist ...

BTW, you don't need the nls archive; it's the Network Support
Libray; AIX carries all the functionality in its libc.a archive ...

kind regards,

Jos

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.