stringtranslate.com

Анонимная трубка

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

Для полнодуплексной (двусторонней) связи обычно требуются два анонимных канала.

Конвейеры поддерживаются в большинстве популярных операционных систем, начиная с Unix и DOS , и создаются с использованием |символа « » во многих оболочках.

Unix

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

Майкрософт Виндоус

Как и многие другие устройства IO и IPC-средства в API Windows , анонимные каналы создаются и настраиваются с помощью функций API, специфичных для средства IO. В этом случае CreatePipeиспользуется для создания анонимного канала с отдельными дескрипторами для концов канала чтения и записи. Операции чтения и записи IO на канале выполняются с помощью стандартных функций API средства IO ReadFileи WriteFile.

В Microsoft Windows чтение и запись в анонимные каналы всегда блокируются. [1] Другими словами, чтение из пустого канала заставит вызывающий поток ждать, пока не станет доступен хотя бы один байт или не будет получен конец файла в результате закрытия дескриптора записи канала. Аналогично, запись в полный канал заставит вызывающий поток ждать, пока не станет доступно место для хранения записываемых данных. Чтения могут возвращаться с меньшим количеством байтов, чем запрошено (также называется коротким чтением ).

Новые процессы могут наследовать дескрипторы анонимных каналов в процессе создания.

Смотрите также

Ссылки

Примечания

  1. ^ "Anonymous Pipe Operations". MSDN . Получено 2010-02-27 . Асинхронные (перекрывающиеся) операции чтения и записи не поддерживаются анонимными каналами.