Основы программирования в Linux
Шрифт:
Резюме
В
Объем книги не позволяет обсудить все до единой функции и тонкости, связанные с потоками, но теперь у вас достаточно знаний для того, чтобы начать писать собственные программы, применяющие потоки, и изучать глубоко скрытые свойства потоков, читая страницы интерактивного справочного руководства.
Глава 13
Связь между процессами: каналы
В главе 11 вы видели очень простой способ пересылки сообщений между процессами с помощью сигналов. Вы формировали уведомляющие события, которые могли бы применяться для вызова ответа, но передаваемая информация была ограничена номером сигнала.
В этой главе вы познакомитесь с каналами, которые позволяют процессам обмениваться более полезной информацией. В конце этой главы вы примените свои вновь приобретенные знания для новой реализации программы, управляющей базой данных компакт-дисков, в виде клиент-серверного приложения.
В данной главе мы обсудим следующие темы:
определение канала;
каналы процессов;
вызовы каналов;
родительские и дочерние процессы;
именованные каналы — FIFO;
замечания, касающиеся клиент-серверных приложений.
Что такое канал?
Мы применяем термин "канал" для обозначения соединения потока данных одного процесса с другим. Обычно вы присоединяете или связываете каналом вывод одного процесса с вводом другого.
Большинство пользователей Linux уже знакомы с идеей конвейера, связывающего вместе команды оболочки так, что вывод одного процесса поставляет данные прямо во ввод другого. В случае команд оболочки это делается
Командная оболочка организует стандартный ввод и вывод двух команд так, что:
стандартный ввод
стандартный вывод
стандартный вывод
На самом деле командная оболочка заново соединила потоки стандартных ввода и вывода так, что потоки данных проходят с клавиатурного ввода через две команды и выводятся на экран. На рис. 13.1 приведено визуальное представление этого процесса.
Рис. 13.1
В этой главе вы увидите, как достичь этого эффекта в программе и как можно использовать каналы для связи многих процессов, что позволит создать простую клиент-серверную систему.
Каналы процессов
Возможно, простейший способ передачи данных между программами — применение функций
popen
Функция popen позволяет программе запустить другую программу как новый процесс и либо передать ей данные, либо получить их из нее. Строка
Если
Вызов функции
Точка Бифуркации XVI
16. ТБ
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Блюдо подают холодным
1. Блюдо подают холодным
Фантастика:
рпг
попаданцы
фэнтези
рейтинг книги
Земля Забытых Имен
Фантастика:
фэнтези
рейтинг книги
Вернувшийся: Первые шаги. Том II
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
рейтинг книги
Гильдия. Компиляция 1-10
Гильдия
Фантастика:
боевая фантастика
альтернативная история
рейтинг книги
Современный польский детектив
Детективы:
прочие детективы
иронические детективы
рейтинг книги
Пушкин
Документальная литература:
биографии и мемуары
рейтинг книги
Константин Леонтьев
1447. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
рейтинг книги
Рассвет русского царства. Книга 2
2. Новая Русь
Фантастика:
альтернативная история
попаданцы
историческое фэнтези
рейтинг книги
"Охотник". Компиляция. Книги 1-12
Собрание сочинений
Фантастика:
боевая фантастика
рейтинг книги
Гражданский кодекс Российской Федерации. Части первая, вторая, третья и четвертая. Текст с изменения
Справочная литература:
путеводители
рейтинг книги