Основы программирования в Linux
Шрифт:
До сих пор вы могли передавать данные только между связанными программами, т.е. программами, которые стартовали из общего процесса-предка. Часто это очень неудобно, хотелось бы, чтобы и у несвязанных процессов была возможность обмениваться данными.
Вы можете сделать это с помощью каналов FIFO, часто называемых именованными каналами. Именованный канал — это файл специального типа (помните, что в ОС Linux все, что угодно, — файл!), существующий в виде имени в файловой системе, но ведущий себя как неименованные каналы, которые вы уже встречали.
Вы можете создавать именованные каналы из командной строки и внутри программы. С давних времен программой создания их в командной строке была команда
Однако команды
У некоторых более старых версий UNIX была только команда
Внутри программы можете применять два разных вызова:
Помимо команды
Итак, выполните упражнение 13.9.
Далее приведен исходный текст примера fifo1.c.
Вы можете создать канал и заглянуть в него:
Обратите внимание на то, что первый символ вывода —
Как это работает
Программа применяет функцию
Удалить FIFO можно как традиционный файл с помощью команды
Доступ к FIFO
У именованных каналов есть одно очень полезное свойство: поскольку они появляются в файловой системе, их можно применять в командах на месте обычного имени файла. Прежде чем вы продолжите программирование с использованием созданного вами файла FIFO, давайте исследуем поведение такого файла с помощью обычных команд для работы с файлом (упражнение 13.10).
1. Сначала попробуйте прочесть (пустой) файл FIFO:
2. Теперь попытайтесь записать в FIFO. Вам придется использовать другой терминал, поскольку первая команда в данный момент "зависла" в ожидании появления каких-нибудь данных в FIFO:
Вы увидите вывод команды
3. Можно выполнить обе команды одновременно, переведя первую в фоновый режим:
Как это работает
Поскольку в канале FIFO не было данных, обе команды,
Брак по-драконьи
Фантастика:
фэнтези
рейтинг книги
Черный рынок
6. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
рейтинг книги
Вперед в прошлое 3
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Хозяин Стужи 3
3. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Черный Маг Императора 17
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Император Пограничья 1
1. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
рейтинг книги
Я снова князь. Книга XXIII
23. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Рассвет русского царства
1. Новая Русь
Документальная литература:
историческая литература
рейтинг книги
Последний Паладин. Том 8
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
Камень. Книга шестая
6. Камень
Фантастика:
боевая фантастика
рейтинг книги
Я - истребитель
1. Я - истребитель
Фантастика:
альтернативная история
рейтинг книги