Шрифт:
9.3. Базовое межпроцессное взаимодействие: каналы и очереди FIFO
Межпроцессное взаимодействие (Interprocess communication — IPC) соответствует своему названию: это способ взаимодействия для двух отдельных процессов. Самым старым способом IPC на системах Unix является канал (pipe): односторонняя линия связи. Данные, записанные в один конец канала, выходят из другого конца.
9.3.1. Каналы
Каналы проявляют себя как обычные дескрипторы файлов. Без особого разбирательства вы не можете сказать, представляет ли дескриптор файла сам файл или канал. Это особенность; программы, которые читают из стандартного ввода и записывают в стандартный вывод, не должны знать или заботиться о том, что они могут взаимодействовать с другим процессом. Если хотите знать, каноническим способом проверки этого является попытка выполнить с дескриптором '
94
Такая операция часто обозначается no-op — «no operation» (нет операции) — Примеч. автора.
9.3.1.1. Создание каналов
Системный вызов
Значение аргумента является адресом массива из двух элементов целого типа,
Если вызов был успешным, у процесса теперь есть два дополнительных открытых дескриптора файла. Значение
Как упоминалось, данные, записанные в записываемый конец, считываются из читаемого конца. После завершения работы с каналом оба конца закрываются с помощью вызова
Строки 11–15 объявляют локальные переменные; наибольший интерес представляет