Um pipe é simplesmente um mecanismo de comunicação entre processos (IPC) usado para conectar a saída padrão de um processo à entrada padrão de outro.
Um exemplo é quando você deseja pesquisar um arquivo pela palavra "pax":
cat filename | grep pax
e sim, eu sei que você pode grep
o arquivo diretamente, mas isso não explica como funciona, não é?
Isso conecta a saída padrão do comando cat
à entrada padrão do comando grep
. cat
envia o conteúdo do arquivo para sua saída padrão e grep
lê seu arquivo (neste caso) de sua entrada padrão. Ao conectar processos juntos dessa maneira, você pode criar suas próprias ferramentas, consistindo em qualquer número de segmentos de tubos. Coisas como:
show_users | grep pax | awk -F: '{print $4}' | tr '[a-z]' '[A-Z]' | cut -c1-20
Um canal quebrado é aquele em que (normalmente) o receptor dos dados fechou a conexão enquanto o remetente ainda está tentando enviar coisas.
Por exemplo, se você enviar um arquivo grande por meio de um programa de pager (para visualizá-lo uma página por vez):
cat myfile | pager
e, em seguida, faça um CTRL-BREAK , isso pode fazer com que o processo pager
encerre seu canal de entrada antes que cat
tenha terminado de usá-lo. Essa é uma possibilidade para conseguir esse cano quebrado.
De um pesquisa do Google superficial, esse problema em particular parece estar relacionado a implementações ad hoc e as soluções fornecidas geralmente incluem a maioria dos seus programas e a reinicialização da maioria dos seus dispositivos.
Isso provavelmente é grave o suficiente para relatar o problema à Apple. Quanto mais desenvolvedores reclamarem, mais provavelmente algo será feito para corrigi-lo.