Pesquisar..
Login
| Pipes |
|
|
|
| Escrito por Ronaldo Meneguite |
| Sex, 15 de Janeiro de 2010 22:00 |
|
Abstract: This article discusses about pipe mechanism. Pipe was created by Doug McIlroy, for Unix shell, and was named by analogy to fluid transports pipes. The central idea of pipe is to link a set of processes, in a way that each process' output is the next process's input. Resumo: Este artigo discorre brevemente sobre o mecanismo de PIPE. Criado pelo professor Doug McIlroy, para o shell do Unix, o mecanismo tem seu nome inspirado nos tubos(pipes), de transporte de fluídos. A idéia do PIPE é encadear um conjunto de processos, de modo que a saída de cada um seja a entrada do seguinte.
A comunicação entre processos, do inglês Inter-Process Communication (IPC), é o grupo de mecanismos ao qual permite que processos possam transferir informações entre si. Para a execução de um processo é pressuposto por parte do sistema operacional, entre outras coisas, a criação de um contexto de execução própria ao qual abstrai os processos dos componentes reais do sistema. Devido a esta “virtualização” dos recursos, o processo não tem conhecimento acerca dos outros processos e, como tal, não consegue trocar informação com os outros processos.
1.1. Pipes 1.1.1 Pipes unidirecionais
Esta é a forma mais divulgada de IPC. O Pipe unidirecional, ou "canalização", é o redirecionamento da saída padrão de um programa para a entrada padrão de outro. É um recurso muito utilizado em sistemas Unix/Linux para tratar entradas e saídas de dados, um recurso muito versátil ao qual permite que seja redirecionado a entrada ou saída padrão de um determinado processo, para um segundo processo. Um exemplo de uso do pipe no linux seria:
cat doctum.txt | wc
Figura 1 – Representação gráfica de uso do PIPE
Por exemplo, pode-se criar um pipe e instruir o programa gzip para comprimir aquilo que é enviado (piped) para ele.
mkfifo pipe
Esse comando comprimirá os dados do arquivo "origem" em um arquivo de nome "destino".
1.1.2.2. Pipe nomeado no Windows
No Windows, o projeto do pipe nomeado foi influenciado pela comunicação cliente-servidor e, por isso, eles se parecem muito mais com sockets do que com operações convencionais de escrita e leitura. O Windows suporta um "modo passivo" para aplicações servidoras (comparável com os domain sockets do Unix). O Windows 95 suporta pipes nomeados em modo cliente que, no Windows NT, também podem atuar como servidores. O pipe nomeado pode ser acessado como um arquivo. As funções CreateFile, ReadFile, WriteFile e CloseHandler, da SDK Win32, podem ser utilizadas para abrir, ler, escrever e fechar um pipe. As funções da biblioteca C, como fopen, também podem ser utilizadas para operações em pipes nomeados, ao contrário do caso dos Windows Sockets, onde a comunicação em rede não foi implementada como operações padrão de I/O em arquivos. Não existe interface de linha de comando como nos sistemas Unix. O pipe nomeado não é permanente e não pode ser criado como um arquivo especial em sistemas de arquivo que permitam escrita, como no Unix. O pipe é volátil (é liberado após a última referência para ele ser fechada), é alocado na raiz do named pipe filesystem (NPFS) e é montado através do caminho especial \\. \pipe\ (isto é, um pipe nomeado como "foo" deve ter um nome de caminho de \\.\pipe\foo). O pipe anônimo dos comandos de pipeline é na realidade um pipe nomeado com um nome aleatório.
1.1.2.3. Pipe nomeado numa rede Windows
2. Conclusão
PIPE nomeado. In: Wikipédia: a enciclopédia livre. Disponível em: <http://pt.wikipedia.org/wiki/Pipe_nomeado> Acesso em: 5 nov 2009 RIBEIRO, Uirá. Certificação Linux. 1° ed. Axcel Books, 2004. |
| Última atualização em Sáb, 23 de Janeiro de 2010 23:58 |




