ipc - Public domain single header inter process communication primitives

  •        69

Public domain, cross platform, single header inter-process communication primitives. This is a "stb like" public domain header-only C/C++ library that provides inter process communication functionality, released under unlicense.




Related Projects

Hermes - A smart, novel and easy-to-use framework for Android Inter-Process Communication (IPC)

  •    Java

A smart, novel and easy-to-use framework for Android Inter-Process Communication (IPC). Hermes is a smart, novel and easy-to-use framework for Android Inter-Process Communication (IPC). In this framework, you can use IPC even if you do not understand the underneath principle of Android IPC.

sharedhashfile - Share Hash Tables Stored In Memory Mapped Files Between Arbitrary Processes & Threads

  •    C

SharedHashFile is a lightweight NoSQL key value store / hash table, a zero-copy IPC queue, & a multiplexed IPC logging library written in C for Linux. There is no server process. Data is read and written directly from/to shared memory or SSD; no sockets are used between SharedHashFile and the application program. APIs for C, C++, & nodejs. Data is kept in shared memory by default, making all the data accessible to separate processes and/or threads. Up to 4 billion keys can be stored in a single SharedHashFile hash table which is limited in size only by available RAM.

node-ipc - Inter Process Communication Module for node supporting Unix sockets, TCP, TLS, and UDP

  •    HTML

a nodejs module for local and remote Inter Process Communication with full support for Linux, Mac and Windows. It also supports all forms of socket communication from low level unix and windows sockets to UDP and secure TLS and TCP sockets. This work is licenced via the DBAD Public Licence.


  •    C

libshbuf introduces a new IPC concept: the quot;shared bufferquot;, a more flexible and faster alternative for standard Unix FIFOs. Take some shared memory, flavour it with semaphore based locking and change notifications and refine it with an easy-to-use API.

tcpshm - A connection-oriented persistent message queue framework based on TCP or SHM(shared memory)

  •    C++

When using TCP to transfer data, sent out messages are not guaranteed to be received or handled by the receiver, and even worse, we often get unexpected disconnections due to network issues or program crash, so efforts have been made on recovery procedure to ensure both sides are synced. TCPSHM provides a reliable and efficient solution based on a sequence number and acknowledge mechanism, that every sent out msg is persisted in a send queue until sender got ack that it's been consumed by the receiver, so that disconnects/crashes are tolerated and the recovery process is purely automatic. And as the name implies, shared memory is also supported when communicating on the same host, and it provides the same API and behavior as TCP(so whether TCP or SHM underlies the connection is transparent to the user), but it's more than 20 times faster than TCP on localhost(However TCP is still 3 times faster than ZeroMQ IPC, see Performance). The shared memory communication is based on A real-time single producer single consumer msg queue.

Aeron - Efficient reliable unicast and multicast transport protocol

  •    Java

Aeron is an efficient reliable unicast and multicast transport protocol. The Aeron protocol is designed to be run directly over many different types of transmission media, including shared memory/IPC, InfiniBand/RDMA, UDP, TCP, Raw IP, HTTP, WebSocket, BLE, etc.

IPC 175x Utilities

  •    Java

IPC 175x Utilities is a collection of software tools to support the IPC 1750 series of supplier declaration standards. These utilities are being developed to help electronics industry supply chain stakeholders implement the IPC 1750 series of standard.

ipc-channel - A multiprocess drop-in replacement for Rust channels

  •    Rust

ipc-channel is an implementation of the Rust channel API (a form of communicating sequential processes, CSP) over the native OS abstractions. Under the hood, this API uses Mach ports on the Mac and file descriptor passing over Unix sockets on Linux. The serde library is used to serialize values for transport over the wire. Note that both IpcSender<T> and IpcReceiver<T> implement Serialize and Deserialize, so you can send IPC channels over IPC channels freely, just as you can with Rust channels.

f9-kernel - An efficient and secure microkernel built for ARM Cortex-M cores, inspired by L4

  •    C

This is F9, an experimental microkernel used to construct flexible embedded systems inspired by famous L4 microkernel. The motivation of F9 microkernel is to deploy modern kernel techniques to support running real-time and time-sharing applications (for example, wireless communications) for ARM Cortex-M series microprocessors with efficiency (performance + power consumption) and security (memory protection + isolated execution) in mind. F9 follows the fundamental principles of microkernels in that it implements address spaces, thread management, and IPC only in the privileged kernel.


  •    C

CommLib is an IPC library for Unix systems. It allows related and unrelated process to communicate using several methods (FIFOs, PIPEs, shared memory, RPC etc.) using unique, consistent APIs. This will allow the programmer to choose the best and most perf

dnpipes - Distributed Named Pipes

  •    Go

Distributed Named Pipes (or: dnpipes) are essentially a distributed version of Unix named pipes comparable to, for example, SQS in AWS or the Service Bus in Azure. Conceptually, we're dealing with a bunch of distributed processes (dpN above). These distributed processes may be long-running (such as dp0 or dp5) or batch-oriented ones, for example dp3 or dp6. There are a number of situations where you want these distributed processes to communicate, very similar to what IPC enables you to do on a single machine. Now, dnpipes are a simple mechanism to facilitate IPC between distributed processes. What follows is an interface specification as well as a reference implementation for dnpipes.

Ribbon - IPC library with built in software load balancers

  •    Java

Ribbon is a client side IPC library that is battle-tested in cloud. It provides Load balancing, Fault tolerance, Multiple protocol (HTTP, TCP, UDP), support in an asynchronous and reactive model Caching and batching.

(C)ross process (C)ontract based method (I)nvocation

  •    CSharp

CroCodile is a simple and efficient way to allow developers to perform cross-process method invocation without the overkills of WCF / remoting / custom protocols. It is developed in C# and targets the .NET framework 3.5 (It makes use of the XDMessaging library - here on codeplex)

Agrona - Library to build high-performance applications in Java and C++

  •    Java

Agrona provides a library of data structures and utility methods that are a common need when building high-performance applications in Java and C++. It supports Buffers, Map, Sets, Cache, Queues and lot more.

libchan - Like Go channels over the network

  •    Go

This provides great flexibility in scaling an application by breaking it down into loosely coupled concurrent services. The same application could be composed of goroutines communicating over in-memory channels; then transition to separate unix processes, each assigned to a processor core, and communicating over high-performance IPC; then to a cluster of machines communicating over authenticated TLS sessions. All along it benefits from the concurrency model which has made Go so popular. Not all transports have the same semantics. In-memory Go channels guarantee exactly-once delivery; TCP, TLS, and the various HTTP socket families do not guarantee delivery. Messages arrive in order but may be arbitrarily delayed or lost. There are no ordering invariants across channels.

semaphore - Fast semaphore using ETS.

  •    Elixir

Programming in Erlang and Elixir usually allows for no locking since the VM essentially handles it for you when communicating between processes. However, what about the situation when you have thousands of processes attempting to interact with a single resource such as a process? Usually they will overload the process and explode the message queue. ETS is the Swiss Army knife of the Erlang VM and can be applied to this problem. By using :ets.update_counter and :write_concurrency we can achieve a fast low contention semaphore on ETS. Then just use it like a semaphore in any other language.

SystemV Transport tO Remote Kernel

  •    C

Stork is a linux 2.6 systemV inter process comunication layer extension. Stork process can share IPC objects, like semaphores or messages passing buffer, in a distributed multi-architecture cluster.



remoteD is a python module that make multiprocess programming and IPC extremely simple. Each process has access to a shared datastore maintained by a remoteD server. remoteD servers are auto created for you when your first process creates a share stub.

redux-electron-store - ‚éč A redux store enhancer that allows automatic synchronization between electron processes

  •    Javascript

This library solves the problem of synchronizing Redux stores in Electron apps. Electron is based on Chromium, and thus all Electron apps have a single main process and (potentially) multiple renderer processes, one for each web page. redux-electron-store allows us to define a store per process, and uses ipc to keep them in sync. It is implemented as a redux store enhancer. This library only works if the data in your store is immutable, as objects are compared by reference to determine changes. The data being synchronized must also be pure JavaScript objects.

Message Broker


A simple pub/sub message broker for IPC communication in .Net. Currently written for the .Net Compact Framework in C# but is portable to the desktop version. The broker relies on "Named Events" for IPC communication and uses a 'push-pull' model to streamline consumption rates.

We have large collection of open source products. Follow the tags from Tag Cloud >>

Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.