We have seen that access to normal files is too slow for them to be used as a general mechanism for inter-process communication. The pipe in UNIX is designed to be used like a file but implemented to allow more efficient transfer of information between two processes. When a file is opened by a process a small integer file identifier is returned by the system for subsequent use when reading or writing the file. For example:
|file-id =||open (filename, access required)|
|[bytes] =||read (file-id, byte-range-within-file)|
|write (file-id, number and location in memory of bytes to write to file, where to write bytes in file)|
A pipe is created by a special system call, but a normal file identifier is returned to the creating process. This ...