Каналы
Каналы используются для передачи данных от одного процесса к другому.
С точки зрения программы, канал есть некая сущность, обладающая двумя файловыми дескрипторами. Через один ФД процесс может писать информацию в канал, через другой ФД процесс может читать информацию из канала.
Каналы могут быть использованы только для обмена данными между родственными процессами и недоступны для независимых процессов.
Особенности работы с каналом. Под хранение информации, передаваемой через канал, выделяется некоторый фиксированный объем оперативной памяти. Если буфер переполнен или в буфере нет еще данных, процесс приостанавливается и ждет, пока не освободится место, либо пока в канале не появится информация. В этих случаях работа процесса может изменяться в зависимости от установленных параметров, которые можно менять программно.

Рисунок 3.9 - Использование канала
Процесс, создающий канал, использует системный вызов pipe(), который возвращает значения файловых дескрипторов для чтения и записи в канал. Этот процесс и его дочерние процессы наследуют и разделяют назначенные файловые дескрипторы. Канал организуется при помощи конвейеров оболочки.
Ls / | more (оба процесса созданы процессом shell и являются родственными)