The shm_unlink function removes 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 is removed before shm_
unlink returns, but the removal of the memory object contents is
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 subsequently causes shm_unlink to behave as
if no shared memory object with 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).