# shm_unlink

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           shm_unlink — remove a shared memory object (**REALTIME**)
    


## SYNOPSIS



           #include <sys/mman.h>
    
           int shm_unlink(const char *_name_);
    


## DESCRIPTION



           The _shm_unlink_() function shall remove the name of the shared
           memory object named by the string pointed to by _name_.
    
           If one or more references to the shared memory object exist when
           the object is unlinked, the name shall be removed before
           _shm_unlink_() returns, but the removal of the memory object
           contents shall be postponed until all open and map references to
           the shared memory object have been removed.
    
           Even if the object continues to exist after the last _shm_unlink_(),
           reuse of the name shall subsequently cause _shm_open_() to behave as
           if no shared memory object of this name exists (that is,
           _shm_open_() will fail if O_CREAT is not set, or will create a new
           shared memory object if O_CREAT is set).
    


## RETURN VALUE



           Upon successful completion, a value of zero shall be returned.
           Otherwise, a value of -1 shall be returned and _errno_ set to
           indicate the error. If -1 is returned, the named shared memory
           object shall not be changed by this function call.
    


## ERRORS



           The _shm_unlink_() function shall fail if:
    
           **EACCES** Permission is denied to unlink the named shared memory
                  object.
    
           **ENOENT** The named shared memory object does not exist.
    
           The _shm_unlink_() function may fail if:
    
           **ENAMETOOLONG**
                  The length of the _name_ argument exceeds {_POSIX_PATH_MAX}
                  on systems that do not support the XSI option or exceeds
                  {_XOPEN_PATH_MAX} on XSI systems, or has a pathname
                  component that is longer than {_POSIX_NAME_MAX} on systems
                  that do not support the XSI option or longer than
                  {_XOPEN_NAME_MAX} on XSI systems.  A call to _shm_unlink_()
                  with a _name_ argument that contains the same shared memory
                  object name as was previously used in a successful
                  _shm_open_() call shall not give an **[ENAMETOOLONG]** error.
    
           _The following sections are informative._
    


## EXAMPLES



           None.
    


## APPLICATION USAGE



           Names of memory objects that were allocated with _open_() are
           deleted with _unlink_() in the usual fashion. Names of memory
           objects that were allocated with _shm_open_() are deleted with
           _shm_unlink_().  Note that the actual memory object is not destroyed
           until the last close and unmap on it have occurred if it was
           already in use.
    


## RATIONALE



           None.
    


## FUTURE DIRECTIONS



           A future version might require the _shm_open_() and _shm_unlink_()
           functions to have semantics similar to normal file system
           operations.
    


* * *