This repository contains C++ wrappers for POSIX Message Queues, Shared Memory, and Pipes, providing a convenient interface for inter-process communication (IPC) in non-blocking mode. The implementation includes support for generic data types using C++ templates.
The NonBlockingMQ class provides a non-blocking interface for POSIX Message Queues, allowing for sending and receiving messages of any data type.
The NonBlockingSHM class provides a non-blocking interface for POSIX Shared Memory, enabling processes to share data efficiently.
The NonBlockingPipe class provides a non-blocking interface for named pipes (FIFO), supporting generic data transport.
The NonBlockingUnixSocket class provides a non-blocking interface for UNIX domain sockets, allowing for inter-process communication on the same machine.
- C++ compiler supporting C++11 or later
- POSIX-compliant operating system (Linux, macOS, etc.)
- Bazel build system
Ensure Bazel is installed on your system. You can download and install Bazel from the Bazel website.
.
├── LICENSE
├── README.md
├── WORKSPACE
├── mqueue
│ ├── BUILD
│ ├── non_blocking_mqueue.hpp
│ └── test_mqueue.cpp
├── pipe
│ ├── BUILD
│ ├── non_blocking_pipe.hpp
│ └── test_pipe.cpp
├── shm
│ ├── BUILD
│ ├── non_blocking_shm.hpp
│ └── test_shm.cpp
└── socket
├── BUILD
├── non_blocking_unix_socket.hpp
└── test_socket.cpp
bazel run mqueue:non_blocking_mqueue bazel run pipe:non_blocking_pipe bazel run shm:non_blocking_shm bazel run socket:non_blocking_socket