Portable IPC on Vanilla Unix

The paper describes an efficient, portable implementation of interprocess communication which does not require modifications to the operating system. The ipc facility described supports communication between arbitrary processes even on systems, such as vanilla Unix V, which normally restrict communication to parent/child or sibling process pairs. Interprocess channels are dynamically allocated, and no system configuration or other static specification is required. The implementation embeds a server registry facility to help clients find the ipc channels for servers. A library of C functions supports the creation, allocation, deallocation and maintenance of ipc channels, the registering, unregistering and searching for servers, and a general packet communication protocol for use between processes using ipc. While described in the context of Unix, the mechanism generalizes to any operating system which supports the 'pipe' or 'core file' concept.