Именованные каналы в Linux

Одной из самых замечательных возможностей межпроцессорного взаимодействия в Linux являются каналы (pipes) или конвейеры.
Чаще всего их применяют для установления связи между процессами. Простейший пример этого:
ps -A | grep 'php'

В данном случае вертикальная черта (|) это безымянный канал, который отправляет данные выхода ps на вход grep.
Для создания именованного канала можно воспользоваться командой:
mkfifo <path> <mode>
Где <path> это имя канала, а <mode> права доступа к нему. Теперь он будет существовать в системе в виде специального файла устройства и различные процессы смогут разделять данные через него.
Хороший практический пример их использования:
mkfifo buffer
gzip -9 -c buffer out
cat some_file > buffer

Теперь все файлы попадающие в buffer будут сжиматься с помощью gzip.


comments powered by Disqus