Programming Interfaces Guide

POSIX Interprocess Communication

POSIX interprocess communication (IPC) is a variation of System V interprocess communication. It was introduced in the Solaris 7 release. 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. POSIX IPC includes the following features:

Unlike the System V IPC interfaces, the POSIX IPC interfaces are all multithread safe.

POSIX Messages

The POSIX message queue interfaces are listed in the following table.

Table 7–2 POSIX Message Queue Interfaces

Interface Name 

Purpose 

mq_open(3RT)

Connects to, and optionally creates, a named message queue 

mq_close(3RT)

Ends the connection to an open message queue 

mq_unlink(3RT)

Ends the connection to an open message queue and causes the queue to be removed when the last process closes it 

mq_send(3RT)

Places a message in the queue 

mq_receive(3RT)

Receives (removes) the oldest, highest priority message from the queue 

mq_notify(3RT)

Notifies a process or thread that a message is available in the queue 

mq_setattr(3RT), mq_getattr(3RT)

Set or get message queue attributes 

POSIX Semaphores

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 25 semaphores.

The POSIX semaphore interfaces are shown below.

sem_open(3RT)

Connects to, and optionally creates, a named semaphore

sem_init(3RT)

Initializes a semaphore structure (internal to the calling program, so not a named semaphore)

sem_close(3RT)

Ends the connection to an open semaphore

sem_unlink(3RT)

Ends the connection to an open semaphore and causes the semaphore to be removed when the last process closes it

sem_destroy(3RT)

Initializes a semaphore structure (internal to the calling program, so not a named semaphore)

sem_getvalue(3RT)

Copies the value of the semaphore into the specified integer

sem_wait(3RT), sem_trywait(3RT)

Blocks while the semaphore is held by other processes or returns an error if the semaphore is held by another process

sem_post(3RT)

Increments the count of the semaphore

POSIX Shared Memory

POSIX shared memory is actually a variation of mapped memory (see Creating and Using Mappings). The major differences are:

The options in shm_open(3RT) are substantially fewer than the number of options provided in open(2).