Введение

В информатике анонимный канал (pipe) — это однонаправленный канал связи FIFO, который может использоваться для односторонней межпроцессной коммуникации (IPC). Реализация часто интегрируется в подсистему файлового ввода-вывода операционной системы. Обычно родительская программа открывает анонимные каналы и создает новый процесс, который наследует другие концы каналов, или создает несколько новых процессов и организует их в конвейер. Для двусторонней (full duplex) связи обычно требуется два анонимных канала. Конвейеры поддерживаются в большинстве популярных операционных систем, начиная с Unix и DOS, и создаются с использованием символа "|" во многих оболочках.

Unix

Трубопроводы — важная часть многих традиционных Unix-приложений, и их поддержка хорошо интегрирована в большинство Unix-подобных операционных систем. Трубопроводы создаются с помощью системного вызова `pipe`, который создает новый трубопровод и возвращает пару файловых дескрипторов, ссылающихся на читающий и записывающий концы трубопровода. Многие традиционные Unix-программы разработаны как фильтры для работы с трубопроводами.

Microsoft Windows

Как и многие другие средства ввода-вывода и межпроцессного взаимодействия в Windows API, анонимные каналы создаются и настраиваются с помощью API-функций, специфичных для данной подсистемы ввода-вывода. В данном случае CreatePipe используется для создания анонимного канала с отдельными дескрипторами для концов чтения и записи. Операции чтения и записи в канале выполняются с помощью стандартных API-функций ReadFile и WriteFile. В Microsoft Windows операции чтения и записи в анонимные каналы всегда блокирующие. Иными словами, чтение из пустого канала приведет к ожиданию вызывающего потока до тех пор, пока не станет доступен хотя бы один байт или не будет получен сигнал о конце файла в результате закрытия дескриптора записи канала. Аналогично, запись в заполненный канал приведет к ожиданию вызывающего потока до тех пор, пока не появится место для сохранения записываемых данных. Операции чтения могут возвращать меньше запрошенного количества байтов (также называемое частичным чтением). Новые процессы могут наследовать дескрипторы анонимных каналов в процессе создания.