Использование каналов для IPC


Имеются два типа каналов (абстрактных файлов) для двусторонней связи: анонимные (неименованные) и именованные каналы. Анонимные (или без имени) каналы (Anonymous pipes) дают возможность родственным процессам передавать информацию друг другу. Как правило, неименованный канал используется для переназначения стандартного ввода или вывода данных дочернего процесса так, чтобы он мог обмениваться данными со своим родительским процессом. Чтобы обмениваться данными в обоих направлениях (дуплексная работа), Вы должны создать два анонимных канала. Родительский процесс записывает данные по одному каналу, используя его дескриптор записи, в то время как дочерний процесс читает данные из этого канала, используя его дескриптор чтения. Точно так же дочерний процесс записывает данные по другому каналу, а родительский процесс читает из него. Анонимные каналы не могут быть использованы в сети, и при этом они не могут быть использованы между несвязанными процессами.

Именованные каналы (Named pipes) используются для передачи данных между процессами, которые являются не связанными процессами и между процессами на разных компьютерах. Как правило, процесс сервера именованного канала (named-pipe server) создает именованный канал с известным именем или именем, которое должно быть сообщено его клиентам. Процесс-клиент именованного канала (named-pipe client), который знает имя канала (абстрактного файла), может открыть его с другого конца, подчиняясь ограничениям доступа, которые определяются процессом сервера именованного канала. После этого, и сервер, и клиент присоединяются к каналу, они могут обмениваться данными, выполняя операции чтения и записи в канале.

Ключевой пункт. Анонимные каналы обеспечивают эффективный способ переназначения стандартного ввода или вывода данных дочерним процессам на том же самом компьютере. Именованные каналы обеспечивают простой интерфейс программирования для передачи данных между двумя процессами, которые постоянно находятся на том же самом компьютере или в сети. Для получения дополнительной информации, см. главу Каналы.

Назад в оглавление темы
На главную страницу темы
Перевод 19.10.2007 21:57 ©Copyright V. Sokovikov
Hosted by uCoz