Jump to content

Именованная труба

(Перенаправлено из именованных каналов )

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

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

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

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

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

cat file > my_pipe

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

rm my_pipe

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

mkfifo -m 0666 /tmp/namedPipe
gzip -d < out.gz > /tmp/namedPipe

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

LOAD DATA INFILE '/tmp/namedPipe' INTO TABLE tableName;

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

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

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

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

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

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

Краткое описание именованных каналов в Microsoft Windows:

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

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

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

См. также

[ редактировать ]
  1. ^ «mkfifo, mkfifoat — создать специальный файл FIFO» . Стандарт IEEE 1003.1-2017 . Открытая группа .
  2. ^ «mknod, mknodat — создать каталог, специальный файл или обычный файл» . Стандарт IEEE 1003.1-2017 . Открытая группа.
  3. ^ «13.2.7 Заявление о ЗАГРУЗКЕ ДАННЫХ» . Справочное руководство MySQL 8.0 . MySQL . Архивировано из оригинала 14 июня 2020 г. Проверено 19 мая 2020 г.
  4. ^ Эйдан Ван Дайк (27 марта 2008 г.). «Re: psql и именованные каналы» . pgsql-хакеры . ПостгреСБЛ . Архивировано из оригинала 20 мая 2022 г. Проверено 19 мая 2020 г.
  5. ^ «Пространство имен System.IO.Pipes» . Сеть разработчиков Microsoft .
  6. ^ «Как подключиться к SQL Server, используя более раннюю версию SQL Server» . Майкрософт . 2019-11-19. Архивировано из оригинала 20 июля 2020 г. Проверено 19 мая 2020 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 95da5082e4c570f045b0d56d0d4b84b8__1722047820
URL1:https://arc.ask3.ru/arc/aa/95/b8/95da5082e4c570f045b0d56d0d4b84b8.html
Заголовок, (Title) документа по адресу, URL1:
Named pipe - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)