CHAPTER 3,“PROCESSES,” DISCUSSED THE CREATION OF PROCESSES and showed
how one process can obtain the exit status of a child process.That’s the simplest form
of communication between two processes, but it’s by no means the most powerful.The
mechanisms of Chapter 3 don’t provide any way for the parent to communicate with
the child except via command-line arguments and environment variables, nor any way
for the child to communicate with the parent except via the child’s exit status. None
of these mechanisms provides any means for communicating with the child process
while it is actually running, nor do these mechanisms allow communication with a
process outside the parent-child relationship.
This chapter describes means for interprocess communication that circumvent these
limitations.We will present various ways for communicating between parents and chil-
dren, between “unrelated” processes, and even between processes on different
Interprocess communication (IPC) is the transfer of data among processes. For example,
a Web browser may request a Web page from a Web server, which then sends HTML
data.This transfer of data usually uses sockets in a telephone-like connection. In
another example, you may want to print the filenames in a directory using a command
such as ls | lpr.The shell creates an ls process and a separate lpr process, connecting
Chapter 5 Interprocess Communication
the two with a pipe, represented by the “|” symbol.A pipe permits one-way commu-
nication between two related processes.The ls process writes data into the pipe, and
the lpr process reads data from the pipe.
In this chapter, we discuss five types of interprocess communication:
n Shared memory permits processes to communicate by simply reading and
writing to a specified memory location.
n Mapped memory is similar to shared memory, except that it is associated with a
file in the filesystem.
n Pipes permit sequential commun