---
name: "shm_unlink"
section: "2"
platform: "macos"
package: "xnu"
version: "12377.121.6"
release: "macOS 26.5"
platforms: ["freebsd", "macos"]
url: "https://new.carta.tech/shm_unlink"
---

# shm\_unlink(2)

remove shared memory object

## NAME

**shm\_unlink** – remove shared memory object

## SYNOPSIS

**#include \<sys/mman.h\>**

*int*\

**shm\_unlink**(*const char \*name*);

## DESCRIPTION

The **shm\_unlink**() function disassociates the shared memory object specified by *name* from that name. The resources associated with the shared memory object remain intact until the last file descriptor reference is removed, e.g., by [close(2)](/close/2.md) or [munmap(2)](/munmap/2.md), at which point the resources are reclaimed (if no references exist at the time of the call to **shm\_unlink**(), the resources are reclaimed immediately). The name can only be reused when it is bound to a new shared memory object with a call to [shm\_open(2)](/shm_open/2.md) with the O\_CREAT flag.

## RETURN VALUES

Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and *errno* is set to indicate the error, and the named shared memory object will remain unchanged.

## ERRORS

The **shm\_unlink**() succeeds unless:

- \[EACCES\]

  Permission is denied to be remove the object.

- \[ENAMETOOLONG\]

  *name* exceeded the name size limit. This is currently PSHMNAMLEN characters (defined in ⟨sys/posix\_shm.h⟩), but this may change in the future.

- \[ENOENT\]

  The named object does not exist.

## SEE ALSO

[close(2)](/close/2.md), [mmap(2)](/mmap/2.md), [munmap(2)](/munmap/2.md), [shm\_open(2)](/shm_open/2.md), [shmat(2)](/shmat/2.md), [shmctl(2)](/shmctl/2.md)

## HISTORY

**shm\_open**() is specified in the POSIX Realtime Extension (1003.1b-1993/1003.1i-1995).
