Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > S


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


shm_open — create/open a shared memory object


#include <sys/mman.h>

int shm_open(const char *name, int oflag, mode_t mode);


The shm_open() system call establishes a connection between a shared memory object and a file descriptor. It creates an open file description that corresponds to the shared memory object and returns a file descriptor that refers to that open file description. This file descriptor (which is the lowest numbered file descriptor not currently open for that process) is used by other functions to refer to that shared memory object.

The name argument points to the shared memory object name, and must conform to the general construction rules for a pathname.

The oflag argument is the bitwise inclusive OR of the flags listed under Read-Write Flags and General Flags (these flags are defined in the header file <fcntl.h>).

The new file descriptor has the FD_CLOEXEC flag set, and consequently does not remain open across exec*() system calls.

Read-Write Flags

The value of oflag must be composed by taking the inclusive OR of exactly one of the following flags:


Open for read access only.


Open for read and write access.

General Flags

Any combination of the following flags may also be used in setting the value of oflag.


If the shared memory object exists, this flag will have no effect, except as noted under O_EXCL below. Otherwise the shared memory object is created; the shared memory object's user ID is set to the effective user ID of the process; the shared memory object's group ID is set to the effective group ID of the process. The shared memory object's permission bits is set to the value of the mode argument except those set in the file mode creation mask of the process. The new shared memory object will have a size of zero.


If O_EXCL and O_CREAT are set in oflag and the named shared memory object exists, shm_open() will fail. The O_EXCL flag is ignored if O_CREAT is not set in oflag.


If the shared memory object exists, and it is successfully opened for reading and writing (O_RDWR set in oflag), the object will be truncated to zero length. The mode and owner shall remain unchanged by this function call.


shm_open() returns the following values:


Successful completion. n is the lowest numbered unused file descriptor for the process.


Failure. errno is set to indicate the error.


If shm_open() fails, errno is set to one of the following values:


The shared memory object exists and the permissions specified by oflag are denied, or the shared memory object does not exist and permission to create the it is denied, or O_TRUNC is specified and write permission is denied.


The O_CREAT and O_EXCL are set in oflag and the named shared memory object already exists.


The shm_open() operation was interrupted by a signal.


The shm_open() operation is not supported for the given name.


Too many file descriptors are currently in use by this process.


The length of the name string exceeds PATH_MAX, or the length of a (pathname) component of the name string exceeds NAME_MAX while _POSIX_NO_TRUNC is in effect.


Too many shared memory objects are currently open in the system.


The O_CREAT flag is not set in oflag and the named shared memory object does not exist.


There are insufficient resources for the creation of the new shared memory object.


shm_open() is not supported by the implementation.


shm_open() in librt: POSIX 1003.1b

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.