POSIX Message Queues

The POSIX standard (IEEE Std 1003.1-2001) defines an IPC mechanism based on message queues, which is usually known as POSIX message queues . They are much like the System V IPC’s message queues already examined in the section "IPC Messages" earlier in this chapter. However, POSIX message queues sport a number of advantages over the older queues:

  • A much simpler file-based interface to the applications

  • Native support for message priorities (the priority ultimately determines the position of the message in the queue)

  • Native support for asynchronous notification of message arrivals, either by means of signals or thread creation

  • Timeouts for blocking send and receive operations

POSIX message queues are handled by means of a set of library functions, which are shown in Table 19-15.

Table 19-15. Library functions for POSIX message queues

Function names

Description

mq_open( )

Open (optionally creating) a POSIX message queue

mq_close( )

Close a POSIX message queue (without destroying it)

mq_unlink( )

Destroy a POSIX message queue

mq_send( ) ,

mq_timedsend( )

Send a message to a POSIX message queue; the latter function defines a time limit for the operation

mq_receive( ) ,

mq_timedreceive( )

Fetch a message from a POSIX message queue; the latter function defines a time limit for the operation

mq_notify( )

Establish an asynchronous notification mechanism for the arrival of messages in an empty POSIX message queue

mq_getattr( ) ,

mq_setattr( )

Respectively ...

Get Understanding the Linux Kernel, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.