Канал - это межпроцессное соединение между файловыми дескрипторами двух процессов. Канал создается с помощью функции POSIX pipe() (из<unistd.h>). Оболочки создают каналы между процессами, если знак "|" используется символ: "cmd1 | cmd2" направляет вывод cmd1 на вход cmd2. В Windows используйте CreatePipe(). Этот механизм перенаправляет стандартный ввод, стандартный вывод и стандартную ошибку в вызывающий процесс в.NET и Java. </unistd.h>

К каждой программе, которая запускается в командной строке, подключено три потока данных: STDIN(0) - стандартный ввод, STDOUT (1) - стандартный вывод - данные, напечатанные программой, STDERR(2) - стандартная ошибка.

Есть способы соединять потоки между программами и файлами, называемые конвейером и перенаправлением.

Конвейер - это механизм для отправки данных из одной программы в другую с использованием символа "|" оператор. Оператор передает выходные данные из программы слева в качестве входных данных для программы справа.

пример

$ cat two_columns
column1:cloth
column2:strawberries
column3:fish
column4:chocolate
column5:punch cards
$ cat two_columns | awk -F: '{print $1}'
column1
column2
column3
column4
column5 
$ cat two_columns | awk -F: '{print "HAS: " $2}'
HAS: cloth
HAS: strawberries
HAS: fish
HAS: chocolate
HAS: punch cards 

Полезные ссылки