DragonFly On-Line Manual Pages
    
    
	
SHM_OPEN(3)           DragonFly Library Functions Manual           SHM_OPEN(3)
NAME
     shm_open, shm_unlink - POSIX shared memory object operations
LIBRARY
     Standard C Library (libc, -lc)
SYNOPSIS
     #include <sys/types.h>
     #include <sys/mman.h>
     int
     shm_open(const char *path, int flags, mode_t mode);
     int
     shm_unlink(const char *path);
DESCRIPTION
     The shm_open() function opens (or optionally creates) a POSIX shared
     memory object named path.  The shm_unlink() function removes a shared
     memory object named path.  Using the same path allows unrelated processes
     to access the same object.
IMPLEMENTATION NOTES
     DragonFly mounts a tmpfs(5) file system at /var/run/shm.  POSIX shared
     memory objects are implemented as ordinary files under that directory.
     The shm_open() and shm_unlink() functions act as wrappers around open(2)
     and unlink(2).  Any leading slash (`/') characters are removed from path
     to make it relative to /var/run/shm.  The flags and mode arguments are
     passed through unaltered.  flags is checked to ensure that the access
     mode specified is not O_WRONLY (which is not defined for shared memory
     objects).
     In addition, the DragonFly implementation causes mmap() of a descriptor
     returned by shm_open() to behave as if the MAP_NOSYNC flag had been
     specified to mmap(2).  (It does so by setting a special file flag using
     fcntl(2).)
RETURN VALUES
     If successful, shm_open() returns a non-negative integer; shm_unlink()
     returns zero.  Both functions return -1 on failure, and set errno to
     indicate the error.
COMPATIBILITY
     On DragonFly and many other operating systems the path argument is
     interpreted as a file system pathname under a special directory where a
     memory-backed file system is mounted.  Most operating systems do some
     name mangling to path.  Leading slashes are commonly removed to turn an
     absolute pathname into a relative one.  Problematic characters may be
     escaped and there may be a length limit on path.  On some systems the
     mangled pathname is completely different from the given path.  On a few
     systems, shared memory objects live outside the ordinary file system in
     their own dedicated namespace.
     According to POSIX two processes opening the same path are guaranteed to
     access the same shared memory object if and only if path begins with a
     slash.  The most portable form of pathname is probably `/foobar', i.e.
     one leading slash, no other slashes and no dots.
     The result of using open(2) on the pathname of a shared memory object, or
     using read(2) or write(2) on a file descriptor returned by shm_open(), is
     undefined by POSIX.  It is also undefined whether the shared memory
     object itself, or its contents, persist across reboots.  On DragonFly and
     most other systems they do not.  Only the O_RDONLY, O_RDWR, O_CREAT,
     O_EXCL, and O_TRUNC flags may be used in portable programs.
ERRORS
     The shm_open() and shm_unlink() functions can fail with any error defined
     for open() and unlink(), respectively.  In addition, the following errors
     are defined for shm_open():
     [EINVAL]           The object named by path is not a shared memory object
                        (i.e., it is not a regular file).
     [EINVAL]           The flags argument to shm_open() specifies an access
                        mode of O_WRONLY.
SEE ALSO
     mmap(2), munmap(2), open(2), unlink(2), tmpfs(5)
STANDARDS
     The shm_open() and shm_unlink() functions are believed to conform to IEEE
     Std 1003.1b-1993 ("POSIX.1b").
HISTORY
     The shm_open() and shm_unlink() functions first appeared in FreeBSD 4.3.
AUTHORS
     Garrett A. Wollman <wollman@FreeBSD.org> (C library support and this
     manual page)
     Matthew Dillon <dillon@FreeBSD.org> (MAP_NOSYNC)
DragonFly 5.5-DEVELOPMENT        June 28, 2019       DragonFly 5.5-DEVELOPMENT