POSIX interprocess communication is a variation of System V interprocess communication. It was introduced in Solaris 7. Like System V objects, POSIX IPC objects have read and write (but not execute) permissions for the owner, the owner's group, and for others. There is no way for the owner of a POSIX IPC object to assign a different owner.
Unlike the System V IPC interfaces, the POSIX IPC interfaces are all multithread safe.
The POSIX message queue interfaces are:
Connects to, and optionally creates, a named message queue |
|
Ends the connection to an open message queue |
|
Ends the connection to an open message queue and causes the queue to be removed when the last process closes it |
|
Places a message in the queue |
|
Receives (removes) the oldest, highest priority message from the queue |
|
Notifies a process or thread that a message is available in the queue |
|
Set or get message queue attributes |
POSIX semaphores are much lighter weight than are System V semaphores. A POSIX semaphore structure defines a single semaphore, not an array of up to twenty-five semaphores.
The POSIX semaphore interfaces are
Connects to, and optionally creates, a named semaphore |
|
Initializes a semaphore structure (internal to the calling program, so not a named semaphore) |
|
Ends the connection to an open semaphore |
|
Ends the connection to an open semaphore and causes the semaphore to be removed when the last process closes it |
|
Initializes a semaphore structure (internal to the calling program, so not a named semaphore). |
|
Copies the value of the semaphore into the specified integer |
|
Blocks while the semaphore is held by other processes or returns an error if the semaphore is held by another process |
|
Increments the count of the semaphore |
POSIX shared memory is actually a variation of mapped memory (see "Creating and Using Mappings"). The major differences are to use shm_open(3RT) to open the shared memory object (instead of calling open(2)) and use shm_unlink(3RT) to close and delete the object (instead of calling close(2) which does not remove the object). The options in shm_open(3RT) are substantially fewer than the number of options provided in open(2).