Prerequisite : Inter Process Communication
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 can fetch messages based on their type field.
All processes can exchange information through access to a common system message queue. The sending process places a message (via some (OS) message-passing module) onto a queue which can be read by another process. 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.
System calls used for message queues:
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.
MESSAGE QUEUE FOR WRITER PROCESS
MESSAGE QUEUE FOR READER PROCESS
- Message encryption and decryption using UDP server
- Print colored message with different fonts and sizes in C
- Message based Communication in IPC (inter process communication)
- What does main() return in C and C++?
- SDL library in C/C++ with examples
- Why to use fgets() over scanf() in C?
- Thread functions in C/C++
- How to Compile and Run C/C++/Java Programs in Linux
- How to get the current position of cursor from output screen in C?
- Operating System | Translation Lookaside Buffer (TLB)
- 8086 program to generate Fibonacci Sequence
- Operating System | The Linux Kernel
- Methods to concatenate string in C/C++ with Examples
- Compiling with g++
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.