Анонимная трубка
В информатике анонимный канал — это симплексный канал связи FIFO , который можно использовать для одностороннего межпроцессного взаимодействия (IPC). Реализация часто интегрируется в операционной системы файловую подсистему ввода-вывода . Обычно родительская программа открывает анонимные каналы и создает новый процесс, который наследует другие концы каналов, или создает несколько новых процессов и объединяет их в конвейер .
Полнодуплексная (двусторонняя) связь обычно требует двух анонимных каналов.
Конвейеры поддерживаются в большинстве популярных операционных систем, начиная с Unix и DOS , и создаются с помощью " |
"персонаж во многих оболочках.
Юникс
[ редактировать ]Конвейеры являются важной частью многих традиционных приложений Unix , и их поддержка хорошо интегрирована в большинство Unix-подобных операционных систем. Трубы создаются с помощью pipe
системный вызов , который создает новый канал и возвращает пару файловых дескрипторов, ссылающихся на концы канала для чтения и записи. Многие традиционные программы Unix созданы как фильтры для работы с каналами.
Microsoft Windows
[ редактировать ]Как и многие другие средства ввода-вывода и IPC устройств в API Windows , анонимные каналы создаются и настраиваются с помощью функций API, специфичных для средства ввода-вывода. В этом случае CreatePipe
используется для создания анонимного канала с отдельными дескрипторами для концов канала чтения и записи. Операции чтения и записи ввода-вывода в канале выполняются с помощью стандартных функций API объекта ввода-вывода. ReadFile
и WriteFile
.
В Microsoft Windows чтение и запись в анонимные каналы всегда блокируются. [1] Другими словами, чтение из пустого канала заставит вызывающий поток ждать, пока хотя бы один байт не станет доступным или пока не будет получен конец файла в результате закрытия дескриптора записи канала. Аналогично, запись в полный канал заставит вызывающий поток ждать, пока не освободится место для хранения записываемых данных. Операции чтения могут вернуть меньше запрошенного количества байтов (также называемое коротким чтением ).
Новые процессы могут наследовать дескрипторы анонимных каналов в процессе создания.
См. также
[ редактировать ]Ссылки
[ редактировать ]- Харт, Джонсон М. Системное программирование для Windows, третье издание. Аддисон-Уэсли, 2005 г. ISBN 0-321-25619-0
- «pipe(7) — справочная страница Linux» . Архивировано из оригинала 23 марта 2010 года . Проверено 27 февраля 2010 г.
Примечания
[ редактировать ]- ^ «Анонимные операции с трубами» . MSDN . Проверено 27 февраля 2010 г.
Асинхронные (перекрывающиеся) операции чтения и записи не поддерживаются анонимными каналами.