pipes nomeados aparentemente não estão funcionando / respondendo?

1

Estou tentando usar pipes nomeados como uma maneira conveniente de pré-processar a entrada instantaneamente para pipelines que infelizmente não aceitam dados diretamente do stdin.

em todos os lugares que procuro informações Recebo basicamente a mesma essência: os pipes nomeados devem ser simples de usar.

a essência é principalmente que o seguinte deve funcionar:

mkfifo mynamedpipe echo "is this working?" > mynamedpipe cat mynamedpipe

quando executo mkfifo mynamedpipe , o canal é criado com sucesso e fica visível com ls * .

Mas mesmo depois que eu me garanto permissão de escrita para aquele pipe, quando eu tento rodar echo "whatever" > mynamedpipe nada acontece e o terminal simplesmente trava até eu matar o processo com ctrl+c .

Eu tenho esse problema em minha máquina linux local (Ubuntu 14.04.5 LTS), bem como em um servidor público (Red Hat Enterprise Linux 7), e em zsh, assim como em bash.

O que estou fazendo de errado aqui?

    
por jov14 06.09.2018 / 18:45

1 resposta

1

Esta postagem parece estar relacionada ao seu problema: Cat para o pipe nomeado causa travamento .

As observações relevantes são:

  • Você precisa ler algo do FIFO
  • Verifique se o canal foi criado com um buffer grande o suficiente ou se os leitores estão rápido o suficiente para evitar o bloqueio
  • Você precisa atribuir o pipe a um descritor de arquivo, como em:

    exec 3<>/tmp/stream_pipe
    
por 06.09.2018 / 19:00