Day57 - POSIX Message Queue IPC¶
Goal¶
Learn Linux POSIX message queue IPC.
Topics:
- blocking queue
- non-blocking queue
- message priority
- mq_notify()
- epoll integration
- timerfd/signalfd integration
Environment¶
Build¶
Queue Object¶
Queue name:
Experiment 1 - Basic Blocking Queue¶
Terminal 1¶
Terminal 2¶
Expected:
Experiment 2 - Priority Queue¶
Sender¶
Send mixed priorities:
Receiver¶
Observe receive order.
Expected:
Experiment 3 - Queue Full Blocking¶
Configure:
Without Receiver¶
Run sender repeatedly.
Expected:
Start Receiver¶
Receiver drains queue.
Expected:
Experiment 4 - Non-Blocking Sender¶
Open sender queue with:
Expected:
instead of blocking.
Experiment 5 - Non-Blocking Receiver¶
Open receiver queue with:
Expected:
when queue is empty.
Experiment 6 - mq_notify()¶
Receiver registers:
using:
Expected:
Experiment 7 - epoll + mqueue¶
Receiver monitors:
- mqueue fd
using:
Expected:
Experiment 8 - timerfd Integration¶
Receiver integrates:
- timerfd
into epoll loop.
Expected:
Experiment 9 - signalfd Integration¶
Receiver integrates:
- signalfd
into epoll loop.
Signals:
- SIGINT
- SIGTERM
become epoll events.
Expected:
Final Architecture¶
This demonstrates a classic Linux userspace daemon event loop.