Inter Process Communication-Message Queue
A message queue is a linked
list of messages stored within the kernel and identified by a message queue
identifier. A new queue is created or an existing queue opened by msgget().
New messages are added to the
end of a queue by msgsnd(). Every message has a positive long integer type
field, a non-negative length, and the actual data bytes (corresponding to the length), all of which are specified to
msgsnd() when the message is added to a queue. Messages are fetched from a
queue by msgrcv(). We don't have to
fetch the messages in a first-in, first-out order. Instead, we canfetch
messages based on their type field.
Each message is given an identification or type so that processes can select the appropriate message. Process must share a common key in order to gain access to the queue in the first place.
![]() |
| MESSAGE QUEUE |
●
ftok(): is use to generate a unique
key.
●
msgget(): either returns the message
queue identifier for a newly created message queue or returns the identifiers
for a queue which exists with the same key value.
●
msgsnd(): Data is placed on to a message
queue by calling msgsnd().
●
msgrcv(): messages are retrieved from a
queue.
●
msgctl(): It performs various operations
on a queue. Generally it is use to destroy message queue.
Program
:
To perform
communication using message queues, following are the steps -
