TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #614 516
mkfifo: обмен данными между процессами через именованные каналы

Обычный pipe:

command1 | command2


работает только пока запущены обе команды. Но иногда нужен постоянный канал, к которому разные процессы могут подключаться позже.

Для этого в Linux есть FIFO (named pipe).

▪️Создание именованного канала

mkfifo /tmp/my_pipe


Теперь /tmp/my_pipe выглядит как файл:

ls -l /tmp/my_pipe


Вывод:

prw-r--r-- 1 user user 0 Aug 4 12:00 my_pipe


Буква p означает pipe.

▪️Передача данных между двумя процессами

Терминал 1:

cat /tmp/my_pipe


Терминал 2:

echo "hello from process" > /tmp/my_pipe


Первый процесс сразу получит сообщение.

▪️Пример с логированием

Можно отправлять события из одного скрипта в другой:

mkfifo /tmp/events.pipe

tail -f /var/log/app.log > /tmp/events.pipe &


А отдельный обработчик:

while read line; do
echo "EVENT: $line"
done < /tmp/events.pipe


Теперь обработка логов отделена от источника данных.

▪️Важный момент
FIFO блокирует процесс:

echo "data" > /tmp/my_pipe


будет ждать, пока кто-то откроет канал на чтение.

Поэтому в автоматизации часто используют фоновые процессы:

cat /tmp/my_pipe &
echo "start" > /tmp/my_pipe


▪️Чем отличается от обычного файла

Данные в FIFO не сохраняются на диске.
Если никто не читает:
процесс → FIFO → процесс
данные не складываются в очередь, а ждут получателя.

▪️Где полезно

• связь между Bash-скриптами;
• простые IPC-механизмы;
• обработка потоков данных;
• разделение генератора и обработчика.

▪️Почему это важно

mkfifo часто заменяет временные файлы и сложные конструкции с перенаправлениями. Это простой способ построить связь между независимыми процессами прямо средствами Linux без дополнительных сервисов.

BashTex 📱 #mfifo
  • 👍 9
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →