Interprocess communication in the ninth edition unix system
David L. Presotto, Dennis M. Ritchie · Software Practice and Experience · 1990
When processes wish to communicate, they must first establish communication. The stream mechanisms introduced in the Eighth Edition Unix system,1 which have now become part of AT&T's Unix System V2, provide a flexible way for processes to conduct an already-begun conversation with devices and with each other: an existing stream connection is named by a file descriptor, and the usual read, write, and I/O control requests apply. Processing modules may be inserted dynamically into a stream connection, so network protocols, terminal processing, and device drivers separate cleanly. However, these mechanisms, by themselves, do not provide a general way to create channels between processes. Simple extensions provide new ways of establishing communication. In our system, the traditional Unix IPC mechanism, the pipe, is a cross-connected stream. A generalisation of file-system mounting associates a stream with a named file. When the file is opened, operations on the file are operations on the stream. Open files may be passed from one process to another over a pipe. These low-level mechanisms allow construction of flexible and general routines for connecting local and remote processes.