Pipe nomeado - Named pipe

Em computação , um named pipe (também conhecido como um FIFO para o seu comportamento) é uma extensão para o tradicional tubo conceito em Unix e Unix como sistemas, e é um dos métodos de comunicação entre processos (IPC). O conceito também é encontrado no OS / 2 e no Microsoft Windows , embora a semântica seja substancialmente diferente. Um cachimbo tradicional é " sem nome " e dura apenas enquanto durar o processo. Um tubo nomeado, no entanto, pode durar enquanto o sistema estiver ativo, além da vida útil do processo. Ele pode ser excluído se não for mais usado. Normalmente, um pipe nomeado aparece como um arquivo e, geralmente, os processos anexam a ele para IPC.

Em Unix

Em vez de um pipeline de shell convencional e sem nome, um pipeline com nome faz uso do sistema de arquivos . Ele é criado explicitamente usando mkfifo()ou mknod(), e dois processos separados podem acessar o canal pelo nome - um processo pode abri-lo como um leitor e o outro como um gravador.

Por exemplo, pode-se criar um pipe e configurar o gzip para compactar coisas canalizadas para ele:

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

Em um shell de processo separado, de forma independente, pode-se enviar os dados a serem compactados:

cat file > my_pipe

O canal nomeado pode ser excluído como qualquer arquivo:

rm my_pipe

Um pipe nomeado pode ser usado para transferir informações de um aplicativo para outro sem o uso de um arquivo temporário intermediário. Por exemplo, você pode canalizar a saída do gzip para um canal nomeado como:

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

Em seguida, carregue os dados descompactados em uma tabela MySQL da seguinte forma:

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

Sem esse pipe nomeado, seria necessário escrever toda a versão descompactada de file.gz antes de carregá-lo no MySQL. Gravar o arquivo temporário consome muito tempo e resulta em mais E / S e menos espaço livre no disco rígido.

O utilitário de linha de comando do PostgreSQL,,psql também suporta o carregamento de dados de canais nomeados.

No Windows

Um pipe nomeado pode ser acessado como um arquivo. Win32 funções do SDK CreateFile, ReadFile, WriteFilee CloseHandleabrir, ler, escrever, e perto de um tubo, respectivamente. Ao contrário do Unix, não há interface de linha de comando , exceto para PowerShell .

Pipes nomeados não podem ser criados como arquivos em um sistema de arquivos normal, ao contrário do Unix. Também ao contrário de suas contrapartes Unix, os pipes nomeados são voláteis (removidos após o fechamento da última referência a eles). Cada canal é colocado no diretório raiz do sistema de arquivos de canal nomeado (NPFS), montado sob o caminho especial \\.\pipe\(ou seja, um canal denominado " foo " teria um nome de caminho completo de \\.\pipe\foo). Canais anônimos usados ​​em pipelining são, na verdade, canos nomeados com um nome aleatório.

Eles são raramente vistos pelos usuários, mas há exceções notáveis. A ferramenta de virtualização de hardware VMware Workstation PC , por exemplo, pode expor portas seriais emuladas para o sistema host como pipes nomeados, e o depurador de modo kernel WinDbg da Microsoft oferece suporte a pipes nomeados como um transporte para sessões de depuração (na verdade, VMware e WinDbg podem ser acoplados - já que o WinDbg normalmente requer uma conexão serial com o computador de destino - permitindo que os desenvolvedores de driver façam seu desenvolvimento e teste em um único computador). Ambos os programas exigem que o usuário insira nomes no formulário. \\.\pipe\name

Os pipes nomeados do Windows NT podem herdar um contexto de segurança.

Resumo dos canais nomeados no Microsoft Windows:

  • IPC entre máquinas e intra-máquinas
  • Half-duplex ou full-duplex
  • Orientado por byte ou por pacote
  • De confiança
  • Comunicação orientada para conexão
  • Leitura e gravação bloqueadora ou não bloqueante (selecionável)
  • Alças de I / O de dispositivo padrão ( ReadFile, WriteFile)
  • Namespace usado para criar identificadores
  • Tráfego ineficiente de WAN (solicitação explícita de transferência de dados, ao contrário, por exemplo, de janela deslizante TCP / IP etc.)
  • Leituras que podem ser visualizadas (ler sem remover do buffer de entrada do canal)

O .NET Framework 3.5 adicionou suporte a pipe nomeado.

Pipes nomeados também podem ser usados ​​como um ponto de extremidade no Microsoft SQL Server .

Pipes nomeados também são um protocolo de rede no pacote SMB ( Server Message Block ), com base no uso de um compartilhamento especial de comunicação entre processos (IPC). O IPC do SMB pode passar de maneira transparente e transparente o contexto de autenticação do usuário para Pipes nomeados. Todo o conjunto de serviços do protocolo NT Domain do Windows NT é implementado como serviço DCE / RPC em Pipes nomeados, assim como os aplicativos administrativos do Exchange 5.5.

Veja também

Referências

links externos