Pipe nomeado: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
m Substituição de predefinições obsoletas
DannyS712 (discussão | contribs)
m <source> -> <syntaxhighlight> (phab:T237267)
Linha 6:
Por exemplo, pode-se criar um pipe e instruir o programa [[gzip]] para comprimir aquilo que é enviado (''canalizado'' - ''piped'') para ele.
 
<sourcesyntaxhighlight lang="bash">
 
mkfifo meu_pipe
gzip -9 -c < meu_pipe > saida.gz &
</syntaxhighlight>
</source>
 
Em um shell de processo separado, independentemente, poderiam ser enviados os dados a serem comprimidos:
 
<sourcesyntaxhighlight lang="bash">
cat arquivo > meu_pipe
</syntaxhighlight>
</source>
 
O pipe nomeado pode ser deletado como qualquer arquivo:
 
<sourcesyntaxhighlight lang="bash">
rm meu_pipe
</syntaxhighlight>
</source>
 
Um pipe nomeado pode ser usado para transferir informações de uma aplicação para outra sem o uso de um arquivo temporário intermediário. Por exemplo, você pode canalizar (pipe) a saída do gzip em um pipe nomeado desta forma:
 
<sourcesyntaxhighlight lang="bash">
mkfifo --mode=0666 /tmp/pipeNomeado
gzip --stdout -d arquivo.gz > /tmp/pipeNomeado
</syntaxhighlight>
</source>
 
Então carregar os dados descomprimidos em uma tabela [[MySQL]]<ref name="MySQLLDI">[http://dev.mysql.com/doc/refman/5.1/en/load-data.html MySQL 5.1 Reference Manual :: 12.2.6 LOAD DATA INFILE Syntax]</ref> desta forma:
 
<sourcesyntaxhighlight lang="mysql">
LOAD DATA INFILE '/tmp/pipeNomeado' INTO TABLE nomeDaTabela;
</syntaxhighlight>
</source>
 
Sem este pipe nomeado seria necessário escrever a versão descomprimida inteira do arquivo.gz antes de carregá-lo no MySQL. Escrever o arquivo temporário é demorado e resulta em mais [[E/S]] e menos espaço livre no disco rígido.