Provided by: freebsd-manpages_9.2+1-1_all bug

NAME

     shmget — obtain a shared memory identifier

LIBRARY

     Standard C Library (libc, -lc)

SYNOPSIS

     #include <sys/types.h>
     #include <sys/ipc.h>
     #include <sys/shm.h>

     int
     shmget(key_t key, size_t size, int flag);

DESCRIPTION

     Based on the values of key and flag, shmget() returns the identifier of a newly created or
     previously existing shared memory segment.  The key is analogous to a filename: it provides
     a handle that names an IPC object.  There are three ways to specify a key:

        IPC_PRIVATE may be specified, in which case a new IPC object will be created.

        An integer constant may be specified.  If no IPC object corresponding to key is
         specified and the IPC_CREAT bit is set in flag, a new one will be created.

        The ftok(3) may be used to generate a key from a pathname.

     The mode of a newly created IPC object is determined by OR'ing the following constants into
     the flag argument:

     S_IRUSR       Read access for owner.

     S_IWUSR       Write access for owner.

     S_IRGRP       Read access for group.

     S_IWGRP       Write access for group.

     S_IROTH       Read access for other.

     S_IWOTH       Write access for other.

     When creating a new shared memory segment, size indicates the desired size of the new
     segment in bytes.  The size of the segment may be rounded up to a multiple convenient to the
     kernel (i.e., the page size).

RETURN VALUES

     Upon successful completion, shmget() returns the positive integer identifier of a shared
     memory segment.  Otherwise, -1 is returned and errno set to indicate the error.

ERRORS

     The shmget() system call will fail if:

     [EINVAL]           Size specified is greater than the size of the previously existing
                        segment.  Size specified is less than the system imposed minimum, or
                        greater than the system imposed maximum.

     [ENOENT]           No shared memory segment was found matching key, and IPC_CREAT was not
                        specified.

     [ENOSPC]           The kernel was unable to allocate enough memory to satisfy the request.

     [EEXIST]           IPC_CREAT and IPC_EXCL were specified, and a shared memory segment
                        corresponding to key already exists.

SEE ALSO

     shmat(2), shmctl(2), shmdt(2), stat(2), ftok(3)