Именованный канал

редактировать

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

Содержание

  • 1 В Unix
  • 2 В Windows
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки

В Unix

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

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

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

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

cat file>my_pipe

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

rm my_pipe

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

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

Затем загрузите несжатые данные в Таблица MySQL выглядит так:

ЗАГРУЗИТЬ ДАННЫЕ INFILE '/ tmp / namedPipe' INTO TABLE tableName;

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

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

В Windows

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

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

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

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

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

В .NET Framework 3.5 добавлена ​​поддержка именованного канала.

Именованные каналы также могут использоваться в качестве конечной точки в Microsoft SQL Server.

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

См. Также

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-31 08:53:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте