Todos os assinantes precisam ser notificados sobre novos dados de uma maneira que não afete outros assinantes, e o servidor não deve ter que acompanhar os dados recebidos pelos assinantes. Isso torna o FIFO inútil para esse propósito. Ironicamente, um arquivo regular faz exatamente o que você quer, porque os descritores de arquivos em arquivos regulares controlam as alterações dos arquivos. Você pode combinar isso com sobrescrever, o que garante que todas as mudanças sejam publicadas antes que uma nova sobregravação ocorra, significando que você está apenas armazenando uma mensagem.
touch pubsub
tail -f pubsub | while read line; do echo $line; done
tail -f pubsub | while read line; do echo $line; done
echo "message" | cat > pubsub
Você receberá "arquivo truncado" no erro padrão, que é o comportamento esperado, mas se você não quiser vê-lo, adicione 2 > / dev / null
tail está realmente fazendo tudo que lê e echo, mas é escrito assim porque eu suponho que você queira incorporá-lo em um script.