Anonymous shared objects

Using an anonymous shared object eliminates the need for a publically visible name.

Traditionally, a shared memory object has a name, and QNX Neutrino shows those names under /dev/shmem. As a QNX Neutrino extension to POSIX, you can create an anonymous shared memory object. This has several advantages:

  • There's no need for you to create a unique name for the object that no other process is using.
  • There's no need to expose the name under /dev/shmem.
  • It avoids costly path resolution.
  • There are no race conditions, as there could be if two processes are opening the object at the same time.
  • It's useful when a process wants to create a local object and share it with spawned processes; the child processes can simply inherit the parent's file descriptor for the object.

To create an anonymous shared memory object, specify SHM_ANON for the object's name when you call shm_open(). For example:

int fd = shm_open(SHM_ANON, O_RDWR, 0600);

How do you share an object that doesn't have a name? You use a shared memory handle.

Page updated: