9

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

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

Именованный канал создаётся явно с помощью mknod или mkfifo, и два различных процесса могут обратиться к нему по имени.

Например, можно создать канал и настроить gzip на сжатие того, что туда попадает:

mkfifo pipe

gzip -9 -c < pipe > out &

Что такое файлы именованных каналов?

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

Для создания файлов именованных каналов можно использовать утилиту mkfifo:

mkfifo /tmp/my.fifo

Что такое файлы устройств?

Тип файлов в UNIX-подобной ОС, содержат данные, необходимые операционной системе для взаимодействия с физическими устройствами, такими как диски и дисководы, принтеры и факсы и т. п.

Каждый из таких файлов идентифицируется с помощью двух идентификаторов: основного идентификатора (major number) и вспомогательного идентификатора (minor number).

Файлы устройств размещаются в каталоге /dev или в его подкаталогах. Примеры основных файлов:

/dev/sd[буква] — жёсткий диск

/dev/sd[буква][номер] — раздел диска

/dev/eth[номер] — сетевые интерфейсы Ethernet

Узнать информацию о файле устройства можно с помощью команд file и ls.

Создание файла именованного канала

Для создания файла именованного канала достаточно использовать утилиту mknod с параметром p.

mknod -m 777 /home/name/fifo p

Чтобы проверить создание файла именнованного канала:

ls -al | grep fifo

Для прекращения работы с файлом именованного канала достаточно использовать команду rm:

rm /home/name/fifo

Передаем данные через именованный канал

Для передачи данных через именованный канал, в первую очередь, создаем этот канал с помощью команды mkfifo:

mkfifo /tmp/my.fifo

Для проверки, что канал создан, воспользуйтесь:

ls -al /tmp

Для обмена данными между приложениями следует открыть дополнительное окно эмулятора терминала и выполнить в нем команду:

tail -f /tmp/my.fifo

Далее с помощью первого окна терминала выполнить:

echo "Linux" >> /tmp/my.fifo

Во втором окне, вы должны увидеть:

Linux

Прервать работу Ctrl+C. А после окончания использования файла программного канала следует удалить его:

unlink /tmp/my.fifo

Life-Hack [Жизнь-Взлом]/Хакинг

Правила сообщества

Просьба уважать друг друга.

1
Автор поста оценил этот комментарий

Для обмена данными между приложениями следует открыть дополнительное окно эмулятора терминала и выполнить в нем команду:

tail -f /tmp/my.fifo

Далее с помощью первого окна терминала выполнить:

echo "Linux" >> /tmp/my.fifo

Чем это отличается от обычной записи в файл, например, txt?

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества