Из Википедии, свободной энциклопедии
  (Перенаправлено из именованных каналов )
Перейти к навигации Перейти к поиску

В вычислении , А именованный канал (также известный как FIFO для его поведения) является дополнением к традиционной трубной концепции на Unix и Unix-подобных системах, и является одним из методов межпроцессного взаимодействия (IPC). Эта концепция также встречается в OS / 2 и Microsoft Windows , хотя семантика существенно различается. Традиционная трубка " безымянная""и длится только до тех пор, пока процесс. Однако именованный канал может работать до тех пор, пока работает система, сверх срока службы процесса. Его можно удалить, если он больше не используется. Обычно именованный канал отображается как файл. , и обычно к нему присоединяются процессы для IPC.

В Unix [ править ]

Вместо обычного безымянного конвейера оболочки именованный конвейер использует файловую систему . Он явно создается с использованием mkfifo()[1] или mknod(), [2], и два отдельных процесса могут обращаться к каналу по имени - один процесс может открывать его как средство чтения, а другой как средство записи.

Например, можно создать канал и настроить gzip для сжатия данных, переданных по нему:

mkfifo my_pipegzip -9 -c <my_pipe> out.gz &

В отдельной оболочке процесса, независимо, можно было отправить данные для сжатия:

cat файл> my_pipe

Именованный канал можно удалить, как и любой файл:

rm my_pipe

Именованный канал можно использовать для передачи информации из одного приложения в другое без использования промежуточного временного файла. Например, вы можете направить вывод gzip в именованный канал следующим образом:

mkfifo -m 0666 / tmp / namedPipegzip -d <file.gz> / tmp / namedPipe

Затем загрузите несжатые данные в таблицу MySQL [3] следующим образом:

НАГРУЗКИ  DATA  INFILE  '/ TMP / именованный канал'  INTO  TABLE  имя_таблицы ;

Без этого именованного канала нужно было бы записать всю несжатую версию file.gz перед загрузкой в ​​MySQL. Запись временного файла занимает много времени и приводит к увеличению количества операций ввода-вывода и уменьшению свободного места на жестком диске.

Утилита командной строки PostgreSQLpsql также поддерживает загрузку данных из именованных каналов. [4]

В Windows [ править ]

Доступ к именованному каналу можно получить так же, как к файлу. Win32 - функции SDK CreateFile, ReadFile, WriteFileи CloseHandleоткрыть, прочитать, напишите, и закрыть трубу, соответственно. В отличие от Unix, здесь нет интерфейса командной строки , кроме PowerShell .

Именованные каналы не могут быть созданы как файлы в обычной файловой системе, в отличие от Unix. Также, в отличие от своих аналогов в Unix, именованные каналы являются непостоянными (удаляются после закрытия последней ссылки на них). Каждый канал помещается в корневой каталог файловой системы именованного канала (NPFS), монтируется по специальному пути \\.\pipe\(то есть канал с именем « foo » будет иметь полное имя пути \\.\pipe\foo). Анонимные каналы, используемые в конвейерной обработке, на самом деле являются именованными каналами со случайным именем.

Они очень редко видны пользователям, но есть заметные исключения. Workstation VMware PC аппаратное обеспечение виртуализации инструмент, например, может разоблачение эмулировать последовательные порты на хост - системе , как именованные каналы, и в Windbg режиме ядра отладчик от Microsoft поддерживает именованные каналы в качестве транспорта для отладки сессий (на самом деле, VMware и WinDbg может быть вместе - поскольку WinDbg обычно требует последовательного подключения к целевому компьютеру - позволяя разработчикам драйверов выполнять свою разработку и тестирование на одном компьютере). Обе программы требуют, чтобы пользователь вводил имена в форму.\\.\pipe\name

Именованные каналы Windows NT могут наследовать контекст безопасности.

Сводка именованных каналов в Microsoft Windows:

В .NET Framework 3.5 добавлена ​​поддержка именованных каналов. [5]

Именованные каналы также можно использовать в качестве конечной точки в Microsoft SQL Server . [6]

Именованные каналы также являются сетевым протоколом в наборе блоков сообщений сервера (SMB), основанном на использовании специального общего ресурса межпроцессного взаимодействия (IPC). IPC SMB может беспрепятственно и прозрачно передавать контекст аутентификации пользователя по именованным каналам. Весь набор служб протокола NT Domain в Windows NT реализован как служба DCE / RPC по именованным каналам, как и административные приложения Exchange 5.5.

См. Также [ править ]

  • Анонимная труба
  • Анонимный именованный канал
  • Типы файлов Unix

Ссылки [ править ]

  1. ^ "mkfifo, mkfifoat - создать специальный файл FIFO" . IEEE Std 1003.1-2017 . Открытая группа .
  2. ^ «mknod, mknodat - создать каталог, специальный файл или обычный файл» . IEEE Std 1003.1-2017 . Открытая группа.
  3. ^ «13.2.7 Заявление о загрузке данных» . Справочное руководство по MySQL 8.0 . MySQL .
  4. Эйдан Ван Дайк (27 марта 2008 г.). «Re: psql и именованные каналы» . pgsql-hackers . PostgreSQL .
  5. ^ "Пространство имен System.IO.Pipes" . Сеть разработчиков Microsoft .
  6. ^ «Как подключиться к SQL Server с помощью более ранней версии SQL Server» . Microsoft . 2019-11-19 . Проверено 19 мая 2020 .

Внешние ссылки [ править ]

  • Межпроцессное взаимодействие Linux: именованные каналы ( проект документации Linux , 1996)
  • Введение в именованные каналы ( Linux Journal , 1997)